php类自动装载、链式操作、魔术方法实现代码
1、自动装载实例
目录下有3个文件:index.phpload.phptests文件夹
tests文件夹里有test1.php
'; echo__FILE__.'
'; } }
index.php内容
load.php内容
2、php链式操作
namespaceBaobab; classDatabase{ functionwhere($where){ return$this; } functionorder($order){ return$this; } functionlimit($limit){ return$this; } } ?> //index.php $db=newBaobab\Database(); $db->where('id=1')->order('orderbyid')->limit(1);3、魔术方法:
__get/__set:接管对象属性。在给不可访问属性赋值时,
__set()会被调用;读取不可访问属性的值时,__get()会被调用。
__call/__callStatic:在对象中调用一个不可访问方法时,__call()会被调用;用静态方式中调用一个不可访问方法时,__callStatic()会被调用。
__toString:一个类转化成字符串
__invoke:以调用函数的方式调用一个对象时,__invoke()方法会被自动调用。
array[$key]=$value; } function__get($key){ //echo__METHOD__; return$this->array[$key]; } function__call($func,$param){ //var_dump($func,$param); return'magicfunction'; } staticfunction__callstatic($func,$param){ //var_dump($func,$param); return'magicstaticfunction'; } function__toString(){ return__CLASS__; } function__invoke($param){ returnvar_dump($param); } }$obj=newbaobab\Object(); $obj->title='hello'; echo$obj->title; echo$obj->test1('hello',123); echo$obj::test1('hello1',1234); echo$obj; echo$obj('test1');以上就是php中自动装载、链式操作、魔术的实现代码,需要的朋友可以参考一下。