Что такое $this?

195
19 мая 2018, 00:00

Никак не могу понять что собой представляет $this в PHP ООП. Вроде бы и ясно, а вроде бы и нет, объясните кто может, зарание спасибо на ответ!

Answer 1

Это специальная переменная содержащая ссылку на текущий объект.
Через неё можно обращаться к свойствам и методам объекта.

Answer 2

$this - это обращение к переменной или методу в контексте класса.

Самый простой пример:

<?php
class Product {
    private title;
    public function __construct($title)
    {
        $this->title = $title;
    }
    public function getProductTitle() { 
        return $this->title;
    }
}
$product = Product('Potato');
echo $product->getProductTitle()

При попытке в getProductTitle() выполнить return $title будет ошибка, поскольку $title нету в контексте метода getProductTitle().

Answer 3

Это ссылка на самого себя внутри класса. Проще даже привести пример на С++, т.к. там есть прямая работа в памятью.

#include <iostream>
class Test
{
public:
    Test()
    {
        std::cout << "address of this: " << this << '\n';
    }
};
int main()
{
    Test t;
    std::cout << "address of t: " << &t << '\n';
    return 0;
}

Компилируя clang++ test.cpp и запуская ./a.out получим результат:

address of this: 0x7ffd8f854b07
address of t: 0x7ffd8f854b07

Отсюда видно, что this буквально указывает на тот-же объект в памяти, что и переменная t, только, по сути, позволяет этой переменной t как-бы обратиться к самой-себе из своих собственных методов (функций).

Эта же концепция использутся и в PHP.

READ ALSO
Работа с куками в curl

Работа с куками в curl

Допустим у меня есть файл с куками, сгенерированный с помощью curlКак мне в отдельной функции можно обратиться к ссылке, используя эти же куки?Юзерагент...

161
Обновление страницы (AJAX PHP)

Обновление страницы (AJAX PHP)

Сразу оговорюсь, я дилетант, а не программист, задаю вопрос с целью понимания сутиЕсть страница status

314
Убрать отправку на обработчик формы

Убрать отправку на обработчик формы

Есть сайт, на котором две формыОдна из них находится в index

166
Удаление элемента двусвязного списка C++

Удаление элемента двусвязного списка C++

При успешном удалении должно возвращать true, но почему то всегда возвращает фолсВот класс:

183