Как использовать $ это вне класса?

0

Можем ли мы использовать $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 относится к текущему объекту. Так почему бы нам не использовать это?

  • 1
    $tigerObj->anotherClass() используйте $tigerObj->anotherClass()
  • 0
    Вы не можете использовать $this вне класса.
Показать ещё 10 комментариев
Теги:
class
object

3 ответа

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();

Вы получите результат: "Я еще один тигр!"

  • 0
    эм .... панкай бхай
1

НЕТ, вы не можете использовать $ this вне сферы действия класса

пример:

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

генерирует следующую ошибку:

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

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();
  • 0
    Спасибо за ваш ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню