PHP致命错误:不能使用$this作为参数
作者:互联网
我有以下PHP方法,它是代码库的一部分,工作正常:
<?php
class HooksTest extends DrupalTestCase {
public function testPageAlterIsLoggedIn() {
$this->drupal->shouldReceive('userIsLoggedIn')
->once()
->andReturn(TRUE);
$this->drupal->shouldReceive('drupalPageIsCacheable')
->once()
->andReturnUsing(function ($this) {
return $this;
});
$page = [];
$cacheable = $this->object->pageAlter($page);
$this->assertFalse($cacheable);
}
}
代码之前通过了所有CI测试(使用phpunit).
但是现在当我通过php HooksTest.php调用文件时,我遇到以下错误:
PHP Fatal error: Cannot use
$this
as parameter inHooksTest.php
on line 11Fatal error: Cannot use
$this
as parameter inHooksTest.php
on line 11
我已经使用PHP 7.1,7.2和同样的问题进行了测试.我相信它在PHP 5.6中运行.
如何将上面的代码转换为具有相同的含义?
从函数参数中删除$this应该足够吗?
解决方法:
只要跳过$this这个论点,就改变吧
function ($this) {
return $this;
}
至
function () {
return $this;
}
查看示例#5在Anonymous functions页面上自动绑定$this:
<?php
class Test
{
public function testing()
{
return function() {
var_dump($this);
};
}
}
$object = new Test;
$function = $object->testing();
$function();
?>
标签:fatal-error,php,this 来源: https://codeday.me/bug/20190929/1832183.html