Я $this
все время вижу переменную в PHP и понятия не имею, для чего она используется. Никогда лично не пользовался.
Может кто-нибудь сказать мне, как переменная $this
работает в PHP?
Это ссылка на текущий объект, чаще всего используется в объектно-ориентированном коде.
Пример:
<?php
class Person {
public $name;
function __construct( $name ) {
$this->name = $name;
}
};
$jack = new Person('Jack');
echo $jack->name;
Это сохраняет строку «Джек» как свойство созданного объекта.
Лучший способ узнать о
$this
переменной в PHP - это попробовать ее с интерпретатором в различных контекстах:Таким образом,
$this
псевдопеременная имеет метод и свойства текущего объекта. Такая вещь полезна, поскольку позволяет получить доступ ко всем переменным-членам и методам-членам внутри класса. Например:$this
- это ссылка на PHP,Object
который был создан интерпретатором для вас и содержит массив переменных.Если вы вызываете
$this
внутри обычного метода в нормальном классе,$this
возвращает объект (класс), которому принадлежит этот метод.Может
$this
быть неопределенным, если у контекста нет родительского объекта.На php.net есть большая страница, посвященная объектно-ориентированному программированию PHP и его
$this
поведению в зависимости от контекста. https://www.php.net/manual/en/language.oop5.basic.phpисточник
Я знаю его старый вопрос, во всяком случае, другое точное объяснение по поводу $ this . $ this в основном используется для ссылки на свойства класса.
Пример:
вывод:
источник
Это способ ссылки на экземпляр класса изнутри, как и во многих других объектно-ориентированных языках.
Из документации PHP :
источник
Давайте посмотрим, что произойдет, если мы не будем использовать $ this и попытаемся иметь переменные экземпляра и аргументы конструктора с одинаковыми именами с помощью следующего фрагмента кода
Он ничего не повторяет, кроме
это перекликается с "Томом"
источник
$this
во втором конструкторе.$name
находится Том, но вне функции он не имеет никакого значения, потому что его область действия ограничена областью действия функции.когда вы создаете класс, у вас есть (во многих случаях) переменные и методы экземпляра (также известные как функции). $ this обращается к этим переменным экземпляра, чтобы ваши функции могли принимать эти переменные и делать то, что им нужно, чтобы делать с ними все, что вы хотите.
другая версия примера Медера:
источник
$this
является ссылкой на вызывающий объект (обычно объект, которому принадлежит метод, но, возможно, другой объект, если метод вызывается статически из контекста вторичного объекта).источник
$ это специальная переменная, которая относится к тому же объекту, т.е. сам.
он действительно ссылается на экземпляр текущего класса
вот пример, который очистит приведенное выше утверждение
источник
Это длинное подробное объяснение. Надеюсь, это поможет новичкам. Я сделаю это очень просто.
Сначала создадим класс
Вы можете опустить закрывающий тег php,
?>
если используете только код php.Теперь добавим внутрь свойства и метод
Class1
.Свойство представляет собой простую переменную, но мы даем ей имя свойства, потому что оно находится внутри класса.
Метод - это простая функция, но мы говорим метод, потому что он также находится внутри класса.
public
Ключевое слово означает , что метод или свойство можно получить в любом месте скрипта.Теперь, как мы можем использовать свойства и метод внутри
Class1
?Ответ заключается в создании экземпляра или объекта, представьте объект как копию класса.
Мы создали объект, который является
$object1
копиейClass1
всего его содержимого. И мы сбросили все содержимое$object1
usingvar_dump()
.Это даст вам
Итак, все содержимое
Class1
находится внутри$object1
, за исключением тогоMethod1
, что я не знаю, почему методы не отображаются при сбросе объектов.А что, если мы хотим получить
$property1
только доступ . Это просто, мы делаемvar_dump($object1->property1);
, мы только что добавили->property1
, мы указали на это.мы также можем получить доступ
Method1()
, мы делаемvar_dump($object1->Method1());
.Теперь предположим, что я хочу получить доступ
$property1
изнутриMethod1()
, я сделаю этомы создали
$object2 = new Class1;
новую копиюClass1
или, можно сказать, экземпляр. Затем мы указали наproperty1
от$object2
Это будет напечатано
string(15) "I am property 1"
в браузере.Теперь вместо того, чтобы делать это внутри
Method1()
Мы делаем это
$this
Объект используется внутри класса для обозначения самого класса.Это альтернатива для создания нового объекта с последующим его возвратом вот так
Другой пример
Мы создали 2 свойства, содержащие целые числа, а затем добавили их и поместили результат
$this->result
.Не забудь об этом
$this->property1
=$property1
=119
у них такая же ценность и т. д.
Надеюсь, это объясняет идею.
Эта серия видео очень поможет вам в ООП
https://www.youtube.com/playlist?list=PLe30vg_FG4OSEHH6bRF8FrA7wmoAMUZLv
источник
Как сказал Медер, это относится к экземпляру текущего класса .
См. Документацию PHP . Это объясняется в первом примере.
источник