首页 > 编程 > PHP > 正文

关于php __call 与 __callStatic 的内容讲解

2020-03-22 17:46:28
字体:
来源:转载
供稿:网友
php 5.3 后新增了 __call 与__callStatic 魔法方法。

__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。

__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。

__call($funcname, $arguments)

__callStatic($funcname, $arguments)

参数说明:

$funcname String 调用的方法名称。

$arguments Array 调用方法时所带的参数。

__call 例子

 ?phphtml' target='_blank'>class Member{ protected $memberdata = array(); public function __call($func, $arguments){ list($type, $name) = explode( _ , $func); if(!in_array($type, array( set , get )) || $name== ){ return  switch($type){ case set : $this- memberdata[$name] = $arguments[0]; break; case get : return isset($this- memberdata[$name])? $this- memberdata[$name] :  break; default:class User extends Member{ public function show(){ if($this- memberdata){ foreach($this- memberdata as $key= $member){ echo $key. : .$member. br class Profession extends Member{ public function show(){ if($this- memberdata){ foreach($this- memberdata as $key= $member){ echo $key. : .$member. br $userobj = new User();$userobj- set_name( fdipzone $userobj- set_age(29);$userobj- show();$probj = new Profession();$probj- set_profession( IT SERVICE $probj- set_price(2500);$probj- show();? 

__callStatic例子

 ?phpclass Member{ protected static $memberdata = array(); public static function __callStatic($func, $arguments){ list($type, $name) = explode( _ , $func); if(!in_array($type, array( set , get )) || $name== ){ return  $feature = get_called_class(); switch($type){ case set : self::$memberdata[$feature][$name] = $arguments[0]; break; case get : return isset(self::$memberdata[$feature][$name])? self::$memberdata[$feature][$name] :  break; default:class User extends Member{ public static function show(){ $feature = get_called_class(); if(self::$memberdata[$feature]){ foreach(self::$memberdata[$feature] as $key= $member){ echo $key. : .$member. br class Profession extends Member{ public static function show(){ $feature = get_called_class(); if(self::$memberdata[$feature]){ foreach(self::$memberdata[$feature] as $key= $member){ echo $key. : .$member. br User::set_name( fdipzone User::set_age(29);User::show();Profession::set_profession( IT SERVICE Profession::set_price(2500);Profession::show();? 

本文讲解了关于php __call 与 __callStatic 的内容,更多相关知识请关注php 。

相关推荐:

关于memcached 常用命令及使用说明

关于PHPMailer - PHP email transport class 的相关讲解

关于PHP 遍历文件夹及文件类及处理类 的理解

以上就是关于php __call 与 __callStatic 的内容讲解的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表