编程语言
首页 > 编程语言> > PHP致命错误:不能使用$this作为参数

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 in HooksTest.php on line 11

Fatal error: Cannot use $this as parameter in HooksTest.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