我们可以在课外使用$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
指的是当前对象。那么为什么我们不使用它呢?
答案 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
强>