php魔术方法__call和__callStatic
来源:互联网 发布:单片机模块化编程教程 编辑:程序博客网 时间:2024/05/16 09:06
简介
__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。
__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。
当调用一个不可访问的方法时 (如未定义,或者不可见)时,__call()会被调用。其中name参数时要调用的方法名称。 arguments参数时一个数组,包含着要传递给方法的参数
__call代码
<?php class Tuzi{ public function __call($name,$arguments){ switch(count($arguments)){ case 2: echo $arguments[0]*$arguments[1],PHP_EOL; break; case 3: echo array_sum($arguments),PHP_EOL; break; default: echo '参数不对',PHP_EOL; break; } }}$tuzi = new Tuzi;$tuzi -> make(5,6);
__callStatic代码
<?php abstract class ActiveRecord{ protected static $table; protected $fieldvalues; public $select; static function findById($id){ $query = "select * from " .static::$table ." where id=$id"; return self::createDomain($query); } function __get($fieldname){ return $this->fieldvalues[$fieldname]; } static function __callStatic($method,$args){ $field = preg_replace('/^findBy(\w*)$/','${1}',$method); echo $field."<br/>"; $query = "select * from" .static::$table ." where $field='$args[0]"; return self::createDomain($query); } private static function createDomain($query){ $klass = get_called_class(); $domain = new $klass(); $domain->fieldvalues = array(); $domain->select=$query; foreach($klass::$fields as $field => $type){ $domain->fieldvalues[$field] = 'TODO: set from sql result'; } return $domain; }}class Customer extends ActiveRecord{ protected static $table = 'custdb'; protected static $fields = array( 'id' => 'int', 'email' => 'varchar', 'lastname' => 'varchar' );}class Sales extends ActiveRecord{ protected static $table = 'salesdb'; protected static $fields = array( 'id' => 'int', 'item' => 'varchar', 'qty' => 'int' );}echo Customer::findById(123) -> select;//链式操作// assert("select * from custdb where id=123" == // Customer::findById(123) -> select);
阅读全文
0 0
- php魔术方法__call和__callStatic
- 魔术方法__call 和__callStatic
- 魔术方法(__call/__callstatic)
- PHP 魔术方法之 __call 与 __callStatic
- PHP魔术方法之__call与__callStatic方法
- PHP魔术方法之__call与__callStatic方法
- PHP魔术方法之__call与__callStatic方法
- PHP魔术方法之__call与__callStatic方法
- PHP魔术方法之__call与__callStatic方法
- PHP魔术方法之__call与__callStatic方法
- php __call() 和 __callStatic()
- php __call 和 __callStatic
- PHP 魔法方法之__call和__callStatic
- __call和__callStatic方法
- php 魔术方法 __call
- php 魔术方法 __call
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __uns
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
- 批处理中的&、&&、|、||、>、>>符号
- 当安装好Xgboost后当调用其函数出现``` AttributeError: module 'xgboost' has no attribute 'feature_importance_'
- 时间戳转换
- 我应该选一所什么学校--所有选择,都应基于你的需要
- 算法
- php魔术方法__call和__callStatic
- 在函数内不正确地使用了 'getdate'。
- 最新版本sublime text3注册码
- java图片验证码
- 结构化数据、半结构化数据、非结构化数据
- 无人机电机控制开发-厉害了科技不断改进---凯利讯半导体
- 第二章、Spring MVC入门
- 浅谈微服务基建的逻辑
- 《机器学习实战》——Logistic回归