_ _什么意思 php中的魔术方法吗 [ 新手入门 ]
<volist name="my_walls['data']" id="wall">
<div class="Gli" id="wall_item_{$wall.id}">
<div class="user_img"><span class="headpic50"><a href='__TS__/space/{$wall.fromUserId}' class="tips" rel="__TS__/Index/userInfo/uid/{$wall.fromUserId}"><img src="{$wall.fromUserId|getUserFace}" /></a></span></div>
中
<a href='__TS__/space/{$wall.fromUserId}'
看不懂
共 1 条回复
-
就是一个普通的常量。
貌似php里没有这个魔法常量。
魔术方法:PHP把类中所有以(两个下划线)开头的方法当成魔术方法,一般建议用户不要将自定义的方法前面加上作为前缀。魔术方法:
- __construct()
类的默认构造方法,如果construct()和与类同名的方法共同出现时,默认调用construct()而不是同类名方法。一般情况下用户自定义构造方法也会使用__construct()。
- __destruct()
类的析构函数,当该对象的所有引用都被删除,或者对象被显式销毁时执行。
- __get($name)
可以简单归纳为:用$object->a的方式读取对象的属性时,如果属性a存在且是public型,那么直接返回该属性的值;如果属性a不存在或者是protected/private这样的不可直接访问的类型,就会调用__get($name)方法并以返回值为准。一般可以使用该方法使外部可限制性地访问内部属性,或者完成类似java中的反射操作。
- __set($name, $value)
与get($name)类似,用$object->a = 17的方式给属性赋值时,如果属性a存在且是public型,那么直接给属性a赋值皆可;如果属性a不存在或者是protected/private型,就会调用set($name, $value)方法。
- call($name, $arguments) / callStatic($name, $arguments)
当调用不存在或者不可访问的方法时,会调用call($name, $arguments)方法。而当在静态方法中调用不存在或者不可访问的方法时,会调用callStatic($name, $arguments)方法。
- __toString()
当打印对象时会被直接调用。如echo $object;
- __clone()
当对象被拷贝时直接调用。如$a = new Action(); $a = $object;
- isset($name) / unset($name)
对不存在或者不可访问的属性使用isset()或者empty()时,isset()会被调用;当unset一个不存在或者不可访问的属性时,unset()会被调用,否则直接unset该属性皆可。
- __set_state()
用var_export()输出一个对象时,__set_state()会被调用,输出内容以该魔术方法的返回值为准。注:var_export()和var_dump()类似,只是var_export()输出的内容符合php语法。注意使用方法:
$test = new Test(); $b = var_export($test, true); var_dump($b); class Test { public $a; public static function __set_state($array) { $ab = new Test(); $ab->a = 10; return $ab; } }
- __autoload($name)
实例化一个对象时,如果对应的类不存在,则该方法被调用。注意:该方法是全局函数,参数是类的名称。
- sleep() / wakup()
略。
魔术常量:
- LINE
返回文件中的当前行号。
- FILE
返回所在文件的完整路径。
- FUNCTION
返回所在函数名称。
- CLASS
返回所在类的名称。
- METHOD
返回所在类方法的名称。需要注意METHOD返回的是"class::function"的形式,而FUNCTION则返回"function"的形式。
kevinlin0812 zhejiang
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱100
- 威望0
- 积分100