Сеттеры и Геттеры в php | __set() и __get() | Базовый курс PHP-7

preview_player
Показать описание
Метод __set() будет выполнен при записи данных в недоступные (защищенные или приватные) или несуществующие свойства.

Метод __get() будет выполнен при чтении данных из недоступных (защищенных или приватных) или несуществующих свойств.

Редактор кода(IDE):

ЧИТАТЬ:

ДОМАШНЕЕ ЗАДАНИЕ:
Доделать класс по условиям озвученным в конце видео!
Рекомендации по теме
Комментарии
Автор

Маслята, будьте внимательны "магические свойства/методы" создают не очевидный код, и использовать их стоит только если точно понимаете для чего вам это нужно(к примеру базовая модель для таблиц в бд). Имейте в виду - IDE не автокомплитит такие поля, а другие программисты не будут знать о том что где-то в коде вы загнали сюда важную переменную. Ну и т.д. Так же параметры по умолчанию должны быть после обязательных, или вам придется помнить о них и вводить при вызове значение в любом случае, иначе получите ошибку. И имея публичное свойство не стоит делать на него гетеры/сеттеры ибо оно и так доступно вне класса - это избыточный код. Как-то так в крации)

xqbqnpd
Автор

Для PHP 8 добавление новых свойств объектам динамически считается устаревшим (deprecated).

Вместо этого рекомендуется явно объявлять все свойства класса. Если вы хотите добавить новое свойство объекту, вам следует предварительно объявить его в классе:

class Student
{
public $name;
private $age;
public $sex;
public $new_property1;
public $new_property2;

public function __construct(string $name, string $sex, int $age = 18)
{
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}

public function __getAge()
{
return $this->age;
}

public function __set($key, $value)
{
$this->age++;
$this->$key = $value;
}
};

$sasha = new Student('Sasha', 'female', 26);

$sasha->new_property1;
$sasha->new_property2;
echo $sasha->__getAge();

rybak
Автор

Здравствуйте, отлично объясняете!А насколько актуальны магические методы? Рыща по форумам понял что многие стараются их избегать и пользоваться только при крайней необходимости)

PlayOnMax
Автор

все супер, можно попросить, где все это используется? можете в конце видео 2-3 минуты уделит и показать?

almaz
Автор

Зная как работают геттеры и сеттеры в Java, здесь вообще ничего не понятно, особенно в начальном примере, что будет, если в классе несколько переменных? Как геттер их определит и установит кто и где?

rostislav
Автор

9:26 он как задумаля над значением 🤣🤣🤣🤣🤣

formcuw
Автор

причем здесь $key, какую он роль тут играет ?

Noname-jhoq