php7里使用$this->出现错误

我在调用属性的时候,php5里没报任何错误,但是在php7里就报错,代码如下

<?php
class test
{
    protected $view;
    protected function testxxx()
    {
        $this->view = xxx;
    }
}

另外一个类

<?php
cless xxx extends test
{
    public function xx()
    {
        self::testxxx()
    }
}

错误提示如下:
[29-Dec-2017 23:21:45 Asia/Shanghai] PHP Fatal error: Uncaught Error: Using $this when not in object context in

答案已经解决了,是由于某处使用了可变函数导致的,解决方法

call_user_func([new xxx, '函数名'])

另外关于大家说该使用$this,而非self的问题,解释如下:

public:
    self::var 调用父类方法或者属性
    parent::method 调用父类方法
    实例中可以通过$this->var 调用public类型的方法或属性
protected:
    self::var 调用父类方法或者属性
    parent::method 调用父类方法
    实例中不可以通过$this->var 调用public类型的方法或属性
private:
    只能在该类中使用

综合以上几点,所以使用this和self在该实例中都是可以的
不管怎么样,感谢各位大佬指点迷津
欢迎前往往小站:欢迎前往小站

阅读 4.9k
5 个回答

test方法你是怎么调用的?没有实例化使用$this就会报错

你的代码相当于在静态方法修改非静态属性的值,肯定要报Fatal error咯。去好好学学面向对象语法。

test 类里定义的 test 方法是普通方法,而你在继承类中是静态调用的。

问题已经解决,错误和以上示例无关,是因为我在某处使用使用可变函数导致的,问题解决

self::testxxx();
//改为
$this->testxxx();
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题