PHP可以通过类名调用非静态方法

时间:2021-05-06 14:26:55

今日有兄弟遇上一个问题,就是可以通过class名称直接调用该类中的函数,我测试了一下,确实可以,概念中是只有静态方法才可以这样调用的,现在 被刷新了,于是我在方法中加入一行$this相关的操作,再运行,立马报错了,也就是PHP在调用方法时,没有严格限制,但是在方法内部执行时,遇 上$this这个变量时抛出: Using $this when not in object context
也就是如果你的方法内没有涉及到实例化的本类引用,就可以直接调用了

以下是测试代码:
t::t1();

class t{
private $data;

public static function t1(){
echo "\n";
echo __METHOD__;
echo "\n";
self::f1();
}

public static function t2(){
echo "\n";
echo __METHOD__;
echo "\n";
}

public function f1(){
$this->data = 'jken';
echo "\n";
echo __METHOD__;
echo "\n";
}
}
?>