在php中的std对象中添加方法
发布时间:2020-12-13 13:13:27 所属栏目:PHP教程 来源:网络整理
导读:有可能以这种方式添加一个方法/函数,就像 $arr = array( "nid"= 20,"title" = "Something","value" = "Something else","my_method" = function($arg){....}); 或者也许这样 $node = (object) $arr;$node-my_method=function($arg){...}; 如果可能,那么我该
有可能以这种方式添加一个方法/函数,就像
$arr = array( "nid"=> 20,"title" => "Something","value" => "Something else","my_method" => function($arg){....} ); 或者也许这样 $node = (object) $arr; $node->my_method=function($arg){...}; 如果可能,那么我该如何使用该功能/方法?
您不能向stdClass动态添加一个方法,并以正常方式执行它.但是,您可以做一些事情.
在第一个例子中,您正在创建一个closure.您可以通过发出以下命令来执行该关闭: $arr['my_method']('Argument') 您可以创建一个stdClass对象并为其属性分配一个闭包,但是由于语法冲突,您无法直接执行它.相反,你必须做一些像: $node = new stdClass(); $node->method = function($arg) { ... } $func = $node->method; $func('Argument'); 尝试 $node->method('Argument') 会产生错误,因为stdClass上没有存在方法“method”. 使用魔法__call看这个SO answer的一些光滑的黑客. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |