php魔术方法_教程及案例

php__debugInfo()方法是什么,怎么用的?

__tostring()方法一样,由var_dump()、print_r()打印对象体的时候,控制对象体要输出的属性和值;

php__clone()方法是什么,怎么用的?

在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本。

php__set_state()方法是什么,怎么用的?

自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。

php__wakeup() 方法是什么,怎么用的?

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

php__sleep() 方法是什么,怎么用的?

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。

php-unset()方法是什么,怎么用的?

要解释__unset()函数,首先看php:unset(),官方文档中解释了unset()(语言构造器而不是一个函数,不能被可变函数调用),unset()的作用是删除指定的变量且传回true,参数为要删除的变量,传入一个变量作为参数,如果传入的变量存在则返回true,否则返回false。官方解释:unset:释放给定的变量。

php__isset()方法是什么,怎么用的?

php:isset()函数应用,isset()是检查变量或者类属性是否初始化的函数,传入一个变量作为参数,如果传入的变量存在则返回true,否则返回false。官方解释:当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。__isset()它是一种魔术方法,当 isset()或 empty()检查不存在或不可访问的类属性时调用。

php__get(),__set()方法是什么,怎么用的?

在类中定义的属性为private(私有属性),使用类的时候,对类中属性的读取和赋值操作非常频繁,在PHP5.*版本中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性。这两个方法非默认存在的,而是我们手工添加到类里面去的,像构造方法__construct()一样,类里面添加了才会存在,当给类中的私有属性赋值时会自动调用__set()方法,获取类中私有属性的时候会自动调用__get()方法。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。

php__callStatic()方法是什么,怎么用的?

__call()是一个魔术方法,可以处理类内未定义的方法,让浏览器友好输出,对用户友好输出。__call()有两个参数,使用的时候需要传入两个参数,第一个参数是方法名称,第二个参数是包含传递给该方法的参数的所有值。

php__destruct()方法是什么,怎么用的?

说到PHP析构函数,就先了解下PHP构造函数,因为这两个函数正好相反,PHP析构函数只有在对象被垃圾收集器收集前(就是对象从内存中删除之前)才会被自动调用;析构函数允许我们在销毁一个对象之前执行一些设定的操作,如关闭文件、释放结果集等等。