大致意思是 $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()