Intereting Posts
Таблица ссылок Doctrine 2 и Many-to-many с дополнительным полем Laravel, Faker – Увеличивает сгенерированную датуВремя Tricky foreach loop … как? Не получайте сообщение об ошибке, если имя входа неверно, просто пустой div, но я могу определить неправильный пароль, если имя пользователя правильно file_get_contents («php: // input») или $ HTTP_RAW_POST_DATA, какой из них лучше получить тело запроса JSON? Как получить атрибут тега из XML с помощью PHP? div остается видимым после перезагрузки страницы Форматировать результат запроса mysql в желаемый формат Контентные и другие HTTP-заголовки? PHP: переопределение родительских методов с помощью __call Как я могу выбрать и загрузить несколько файлов с помощью HTML и PHP, используя HTTP POST? Правильно закодируйте символы в почтовой форме PHP («Я» превращается в «I \ m») Создание дерева из плоского массива в PHP Представление формы с использованием запроса даты PHP / MySQL на страницу Google Visualization Отправка «Запросов приложений» нескольким получателям с использованием Graph API

Что означает переменная $ this в PHP?

Я вижу переменную $this в PHP все время, и я понятия не имею, для чего она используется. Я никогда не использовал его лично, а поисковые системы игнорируют $ и я в конечном итоге ищу слово «это».

Может ли кто-нибудь сказать мне, как переменная $ работает в PHP?

Это ссылка на текущий объект, который чаще всего используется в объектно-ориентированном коде.

Пример:

 <?php class Person { public $name; function __construct( $name ) { $this->name = $name; } }; $jack = new Person('Jack'); echo $jack->name; 

Это сохраняет строку «Джек» как свойство созданного объекта.

Лучший способ узнать $this переменную в php – это спросить PHP, что это такое. Не спрашивайте нас, спросите у компилятора:

 print gettype($this); //object print get_object_vars($this); //Array print is_array($this); //false print is_object($this); //true print_r($this); //dump of the objects inside it print count($this); //true print get_class($this); //YourProject\YourFile\YourClass print isset($this); //true print get_parent_class($this); //YourBundle\YourStuff\YourParentClass print gettype($this->container); //object 

Я знаю его старый вопрос, во всяком случае другое точное объяснение об этом . $ это в основном используется для ссылки на свойства класса.

Пример:

 Class A { $myname; //this is a member variable of this class function callme(){ $myname='function variable'; $this->myname='Member variable'; echo $myname; //prints function variable echo $this->myname; //prints member variable } } 

вывод:

 function variable member variable 

Это способ ссылки на экземпляр класса изнутри самого себя, как и многие другие объектно-ориентированные языки.

Из документов PHP :

Псевдопеременная $ this доступна, когда метод вызывается из контекста объекта. $ это ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но, возможно, другой объект, если метод вызван статически из контекста вторичного объекта).

Давайте посмотрим, что произойдет, если мы не будем использовать $ this и попробуем иметь переменные экземпляра и аргументы конструктора с тем же именем со следующим фрагментом кода

 <?php class Student { public $name; function __construct( $name ) { $name = $name; } }; $tom = new Student('Tom'); echo $tom->name; ?> 

Это ничего, кроме

 <?php class Student { public $name; function __construct( $name ) { $this->name = $name; // Using 'this' to access the student's name } }; $tom = new Student('Tom'); echo $tom->name; ?> 

это повторяет «Том»

когда вы создаете класс, у вас есть (во многих случаях) переменные экземпляра и методы (aka. functions). $, это позволяет получить эти переменные экземпляра, чтобы ваши функции могли принимать эти переменные и делать то, что им нужно, делать с ними все, что вы хотите.

другая версия примера медитера:

 class Person { protected $name; //can't be accessed from outside the class public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } } // this line creates an instance of the class Person setting "Jack" as $name. // __construct() gets executed when you declare it within the class. $jack = new Person("Jack"); echo $jack->getName(); Output: Jack 

$ это специальная переменная, и она относится к одному и тому же объекту, т.е. сам.

он фактически ссылается на экземпляр текущего класса

вот пример, который очистит приведенное выше утверждение

 <?php class Books { /* Member variables */ var $price; var $title; /* Member functions */ function setPrice($par){ $this->price = $par; } function getPrice(){ echo $this->price ."<br/>"; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ." <br/>"; } } ?> 

$this ссылка на вызывающий объект (обычно объект, к которому принадлежит этот метод, но, возможно, другой объект, если метод вызван статически из контекста вторичного объекта).

Это относится к экземпляру текущего класса, как сказал медикер .

См. Документы PHP . Это объясняется в первом примере.