合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
| __construct() | 构造函数 | | --- | --- | /** * [__construct 类的构造函数,构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法] * @作用 [通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值] * @注意 [在同一个类中只能声明一个构造方法,原因是,PHP不支持构造函数重载] */ public function __construct([参数列表]){ //方法体 //通常用来对成员属性进行初始化赋值 } | __destruct() | 类的析构函数 | | --- | --- | /** * [__destruct 类的析构函数] * @作用 [析构方法在PHP中并不是很常用,它属类中可选择的一部分,允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等] * @注意 [析构方法是PHP5才引进的新内容,析构函数不能带有任何参数] * @example [unset($class)执行方法体] */ public function __destruct(){ //方法体 } | __call(string $function_name, array $arguments) | 调用不存在的方法自动调用该方法 | | --- | --- | /** * [__call 在对象中调用一个不可访问方法时调用,该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $arguments 则以数组的方式接收不存在方法的多个参数] * @作用 [为了避免当调用的方法不存在时产生错误,而意外的导致程序中止,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去] * @return [type] [description] */ public function __call(string $function_name, array $arguments){ // 方法体 } | __callStatic(string $function_name, array $arguments) | 用静态方式中调用一个不可访问方法时调用 | | --- | --- | /** * [__callStatic 用静态方式中调用一个不可访问方法时调用,与__call方法类似] * @return [type] [description] */ public static function __callStatic(string $function_name, array $arguments){ // 方法体 } | __get($param) | 设置一个类的成员变量时调用 | | --- | --- | /** * [__set 设置一个类的成员变量时调用,用来设置私有属性, 给一个未定义的属性赋值时,此方法会被触发,传递的参数是被设置的属性名和值] * @param [string] [$property] [私有属性名] * @param [string] [$value] [私有属性的值] */ public function __set($property, $value){ $this->$property = $value; } | __isset($content) | 当对不可访问属性调用unset()时被调用 | | --- | --- | /** * [__isset 当对不可访问属性调用isset()或empty()时调用] * @param [string] [$content] [要判断的成员属性] * @return boolean [description] * @example [isset($class->name)或empty($class->name),name为私有属性才会触发] */ public function __isset($content){ //方法体 } | __unset($content) | 当对不可访问属性调用unset()时被调用 | | --- | --- | /** * [__unset 当对不可访问属性调用unset()时被调用] * @param [string] [$content] [要销毁的成员属性] * @example [unset($class->name),name为私有属性才会触发] */ public function __unset($content){ //方法体 } | __sleep() | 执行serialize()时,先会调用这个函数 | | --- | --- | /** * [__sleep 执行serialize()时,先会调用这个函数,serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,则该方法会优先被调用,然后才执行序列化操作,此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组,如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误] * @注意 [__sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE 级别的错误。可以用 Serializable 接口来替代] * @作用 [__sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用] * @return array [description] * @example [serialize($class)触发] */ public function __sleep(){ //方法体 return array('name', 'age'); // 这里必须返回一个数值,里边的元素表示返回的属性名称 } | __wakeup() | 执行unserialize()时,先会调用这个函数 | | --- | --- | /** * [__wakeup 执行unserialize()时,先会调用这个函数] * @example [unserialize($class)触发] */ public function __wakeup(){ //方法体 } | __toString() | 类被当成字符串时的回应方法 | | --- | --- | /** * [__toString 类被当成字符串时的回应方法] * @return string [description] * @作用 [方法用于一个类被当成字符串时应怎样回应。例如 `echo $obj;` 应该显示些什么] * @注意 [此方法必须返回一个字符串,否则将发出一条 `E_RECOVERABLE_ERROR` 级别的致命错误] * @警告 [不能在 __toString() 方法中抛出异常。这么做会导致致命错误] * @example [echo $class触发] */ public function __toString(){ //方法体 return 'lingwei'; } | __invoke() | 调用函数的方式调用一个对象时的回应方法 | | --- | --- | /** * [__invoke 调用函数的方式调用一个对象时的回应方法] * @作用 [当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用] * @注意 [本特性只在 PHP 5.3.0 及以上版本有效] * @return [type] [description] * @example [$class()触发] */ public function __invoke(){ //方法体 } | __set_state($array) | 调用var_export()导出类时,此静态方法会被调用 | | --- | --- | /** * [__set_state 调用var_export()导出类时,此静态方法会被调用] * @注意 [自 PHP 5.1.0 起,当调用 var_export() 导出类时,此静态方法会被自动调用] * @param [array] [$aray] [本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性] * @return [type] [description] * @example [var_export($class)触发] */ public function __set_state($array){ $obj = new Magic(); $obj->name = $array['name']; return $obj; } | __clone() | 当对象复制完成时调用 | | --- | --- | /** * [__clone 当对象复制完成时调用,在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本] * @作用 [对象复制可以通过 clone 关键字来完成(如果可能,这将调用对象的 __clone() 方法)。对象中的 __clone() 方法不能被直接调用。] * @注意 [当对象被复制后,PHP 5 会对对象的所有属性执行一个浅复制(shallow copy)。所有的引用属性 仍然会是一个指向原来的变量的引用,当复制完成时,如果定义了 __clone() 方法,则新创建的对象(复制生成的对象)中的 __clone() 方法会被调用,可用于修改属性的值(如果有必要的话)。] * @return [type] [description] * @example [$copy_of_object = clone $object;] */ public function __clone(){ //方法体 } | __autoload($className) | 尝试加载未定义的类 | | --- | --- | /** * [__autoload 尝试加载未定义的类,找不到其它类会自动执行__autoload(),并将类名作为参数传入] * @注意 [这里可以只用require,因为一旦包含进来后,php引擎再遇到类A时,将不会调用__autoload,而是直接使用内存中的类A,不会导致多次包含] * @扩展 [其实php发展到今天,已经有将 `spl_autoload_register` — 注册给定的函数作为 __autoload 的实现了] * @return [type] [description] */ public function __autoload($className){ $filePath = "project/class/{$className}.php"; if (is_readable($filePath)) { require($filePath); } } | __debugInfo() | 打印所需调试信息 | | --- | --- | /** * [__debugInfo 打印所需调试信息] * @注意 [该方法在PHP 5.6.0及其以上版本才可以用,如果你发现使用无效或者报错,请查看你的版本] * @return [type] [description] */ public function __debugInfo(){ //方法体 } .