如何在课外使用$ this?

时间:2014-11-21 11:38:16

标签: php class object

我们可以在课外使用$this吗?请看下面的例子,

<?php 

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

//Tiger::whichClass();

$this->anotherClass();

在此之后,我创建了新对象$tigerObj = new Tiger();,之后我尝试使用$this,但它会抛出错误。那么可以从课堂外使用$this吗?如果不, $this指的是当前对象。那么为什么我们不使用它呢?

3 个答案:

答案 0 :(得分:1)

$这是不可能在课外使用所以你可以制作静态方法,并使用像这样的Tiger :: anotherClass。链接到doc

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public static function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

//Tiger::whichClass();

Tiger::anotherClass();

答案 1 :(得分:1)

不可能以这种方式使用$ this,您可以创建该类的对象,然后扩展您想要调用的方法。见下文......

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

echo $tigerObj->anotherClass();

你会得到结果“我是另一只老虎!”

答案 2 :(得分:1)

不,你不能在课堂范围之外使用$ this

示例:

1    $this=new \DateTime();
2    echo $this->format('r');

生成以下错误:

<强> Fatal error: Cannot re-assign $this on line 2