像__construct()这个很好理解,对象创建完成后,第一个被对象自动调用的方法.很明显可以感受到可以用于初始化等方面.但是__callStatic(),在对象中调用一个不可访问方法时,__call()会被调用。在静态上下文中调用一个不可访问方法时,__callStatic()会被调用.如下代码展示的,感觉好像"你传入什么,最后就输出或返回什么,这不类似于赋值吗?".tp5中,比如用来操作数据库的Db类相关代码经常用到__callStatic()和__call(),在对象中调用一个不可访问方法时,就怎么怎么样......,这种设计有什么精妙之处呢?classPerson{publicfunction__call($name,$arguments){var_dump($name,$arguments);echo"
";}publicstaticfunction__callStatic($name,$arguments){var_dump($name,$arguments);}}$p1=newPerson();$p1->inexistent_method(1,2,6);//调用不存在的普通方法Person::inexistent_static_method(8,9);//调用不存在的静态方法结果如下string(17)"inexistent_method"array(3){[0]=>int(1)[1]=>int(2)[2]=>int(6)}string(23)"nexistent_static_method"array(2){[0]=>int(8)[1]=>int(9)}
一只名叫tom的猫
相关分类