大致意思是 $this 没有上下文,原因是没有对此类进行实例化。
出现此错误的原因是:在FileCommand.php中使用 $this->方法/属性。
$this 不是不可以用,而是要看情况用。在实例化的 类中使用 $this是可以的
class Person{ private var $name; private var $sex; public function showName(){ echo $this->name; $this->message(); } public function message(){ echo "success"; } }
如果不实例化 Person 类而直接访问的话就会出上面的错误,意思是 $this没有上下文。
正确用法:
$person = new Person();
$person.showName();
如果不想定义直接用的话,则可通过: Person::message(); 注意里边不能含有 $this
PHP允许使用static关键字,该关键字适用于允许在未初始化类的情况下就可以调用的方法;
请注意,在一个静态方法中,不能使用this关键字,因为可能会没有可以引用的对象实例。
class test { private $a; function t1( ){ $this->a=1; print $this->a.""; } static function t2( ){ $test=new test(); //静态方法 所以要实例化这个类;而不能直接用 $this-> $test->a=2; print $test->a.""; } } $re= new test( ); $re->t1(); $re::t2();
一般非常量、静态字段、静态方法,都是用指向来 -> 来调用内部成员,例如:$re -> t1()
只有常量、静态字段、静态方法,采用 :: 调用,例如:$re :: t1()