Можем ли мы использовать $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
относится к текущему объекту. Так почему бы нам не использовать это?
Невозможно использовать $ 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();
Вы получите результат: «Я еще один тигр!»
$ невозможно использовать внешний класс, поэтому вы можете сделать статический метод и использовать этот 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();
НЕТ, вы не можете использовать $ this вне сферы действия класса
пример :
1 $this=new \DateTime(); 2 echo $this->format('r');
генерирует следующую ошибку:
Fatal error: Cannot re-assign $this on line 2