PHP魔术方法总结

1. 构造函数__construct()、析构函数__destruct()

分别在类初始化和类回收时调用。

class A{
    public function __construct()
    {
        echo __FUNCTION__,PHP_EOL;

    }

    public function __destruct()
    {
        echo  __FUNCTION__,PHP_EOL;
    }
}
$obj = new A;
unset($obj);

 

 

2. __call($name,$arguments)  、__callStatic($name,$arguments)

__call()调用不存在的实例方法时会调用 , __callStatic()调用不存在的静态方法是会调用。

 

3. __set() 、__get()

设置或获取对象中不存在或非public属性时调用。

class A{

    protected $b = 'b';
    private $c = 'c';

    public function __set($name, $value)
    {
        echo __FUNCTION__,' ',$name,' ',$value,PHP_EOL;
    }

    public function __get($name)
    {
        echo __FUNCTION__,' ',$name,PHP_EOL;
    }
}
$obj = new A;
$obj->a;
$obj->b;
$obj->c;
$obj->a = 'test';

 

3. __isset() 、__unset()

对不可访问的属性调用isset()或empty()时调用 __isset() ,调用unset()时会调用__unset。

class A{

    protected $b = 'b';

    public function __isset($name)
    {
        echo __FUNCTION__,' ',$name,PHP_EOL;
    }

    public function __unset($name)
    {
        echo __FUNCTION__,' ',$name,PHP_EOL;
    }
}
$obj = new A;
isset($obj->a);
unset($obj->b);

 

4. __sleep() 、__wakeup()

对对象调用serialize()和unserialize()时分别查找调用__sleep()和__wakeup()。

class A{

    public $a = 'a';
    protected $b = 'b';
    private $c = 'c';

    public function __wakeup()
    {
        echo __FUNCTION__, PHP_EOL;
    }

    public function __sleep()
    {
        echo __FUNCTION__,PHP_EOL;
        return get_object_vars($this);
    }
}
$obj = new A;
print_r($s = serialize($obj));
echo PHP_EOL;
print_r(unserialize($s));

5 . __toString()

当对象被当成字符串处理时会查找调用例如 echo $obj 。

 

6. __invoke()

把对象作为方法调用时会调用此方法。

 

7. __set_state()

对对象使用var_export方法时调用此方法

 

8. __debugInfo()

对对象使用var_dump时调用,此函数结果必须返回一个数组,决定返回哪些属性或自定义处理。

 

9. __clone()

使用clone关键字克隆对象时调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值