toe*_*lab -1 php class public php-7
在PHP 5.6中:
当我在一个类中时,我们通常会声明并调用这样的公共类变量:
class MyClass
{
/**
* @var int
*/
public $myVar = 0;
// call it in a public function:
public function myFunction()
{
return $this->myVar;
}
}
Run Code Online (Sandbox Code Playgroud)
我把这个函数称为:
MyClass::myFunction();
Run Code Online (Sandbox Code Playgroud)
在PHP 7.0中,该代码抛出致命错误:
不在对象上下文中时使用$ this
将我的PHP版本再次更改回5.6后,错误消失了.
问题:
我必须承认,在阅读手册并从5.6更改为7.0后,我不明白.
评论后编辑:
那么为什么静态调用非静态方法的工作原理是5.6?
在我加载可能func()像这样:
obj::func(); // Wrong, it is not static method
Run Code Online (Sandbox Code Playgroud)
但也可以
$obj = new Obj(); // correct
$obj->func();
Run Code Online (Sandbox Code Playgroud)
您无法以这种方式调用方法,因为它不是静态方法.
obj::func();
Run Code Online (Sandbox Code Playgroud)
您应该使用:
obj->func();
Run Code Online (Sandbox Code Playgroud)
但是,如果您创建了一个静态方法,例如:
static $foo; // your top variable set as static
public static function foo() {
return self::$foo;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以用这个:
obj::func();
Run Code Online (Sandbox Code Playgroud)