php魔术方法。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php魔术方法。。相关的知识,希望对你有一定的参考价值。

php手册里说在 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用,如下:

function __isset( $name )
return isset( $this->$name );


我想说的是为啥不直接把 $name 改为 public,而要这样绕? 新手。谢了

在 PHP 里,将所有以 __(两个下划线)开头的类方法保留为魔术方法,所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。

魔术方法的引入是对面向对象编程思想的进一步实现,重载就是通过魔术方法来实现的。

PHP 魔术方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。

最常见的是__construct(), __destruct(),__get(), __set()等:

__construct和__destruct是类的构造函数和析构函数。
参考技术A 这样绕的话是为了安全,也就是面向对象里封装的理念,如果直接设置Public那么没个对象都可以自由设置这个属性的值了,而且没有经过任务逻辑判断,这样绕弯的话可以增加安全性本回答被提问者采纳 参考技术B 魔术方法包括:
__construct(),类的构造函数
__destruct(),类的析构函数
__call(),在对象中调用一个不可访问方法时调用
__callStatic(),用静态方式中调用一个不可访问方法时调用
__get(),获得一个类的成员变量时调用
__set(),设置一个类的成员变量时调用
__isset(),当对不可访问属性调用isset()或empty()时调用
__unset(),当对不可访问属性调用unset()时被调用。
__sleep(),执行serialize()时,先会调用这个函数
__wakeup(),执行unserialize()时,先会调用这个函数
__toString(),类被当成字符串时的回应方法
__invoke(),调用函数的方式调用一个对象时的回应方法
__set_state(),调用var_export()导出类时,此静态方法会被调用。
__clone(),当对象复制完成时调用
__autoload(),尝试加载未定义的类
__debugInfo(),打印所需调试信息

以上是关于php魔术方法。。的主要内容,如果未能解决你的问题,请参考以下文章

php魔术方法__tostring

PHP的魔术常量和魔术方法

PHP魔术方法和魔术变量

php 魔术方法 和 魔术常量

PHP魔术方法和魔术变量总结

php 魔术方法和魔术常量