提问人:Matrix 提问时间:7/14/2022 更新时间:7/14/2022 访问量:239
在实例上下文中的 stdClass 实例中添加方法/函数以在 PHP 中使用$this?[复制]
add method/function in instance of stdClass in instance context for using $this in PHP? [duplicate]
问:
这个问题在这里已经有答案了:
在 php 的 std 对象中添加方法 (5 个答案)
单个实例的PHP覆盖函数 (2个答案)
去年关闭。
社区去年审查了是否重新讨论这个问题,并关闭了它:
重复这个问题已经得到回答,不是唯一的,也没有与另一个问题区分开来。
如何为stdClass的实例对象添加函数?
$obj = (object)['name' => 'test', 'x' => 0];
$obj->move = function() { $this->x++; return $this->x; };
var_dump(($obj->move)());
我尝试使用闭包来模拟方法,还有另一种方法可以直接将函数动态添加到我的对象中?
举个例子,有一个错误:
致命错误:未捕获错误:不在对象上下文中使用$this
那么如何保持对象上下文,以便在我的闭包中使用呢?$this
我尝试添加但错误停留...(正常)use($obj)
那我该怎么办呢?
答: 暂无答案
评论
object
$obj->move = Closure::fromCallable(function() { $this->x++; return $this->x; })->bindTo($obj);
fromCallable
$obj->move = (function() { $this->x++; return $this->x; })->bindTo($obj);