Урок 17. Магические методы. Функции и операторы для работы с классами Flashcards

1
Q

Магические методы перегрузки классов

A

__construct() Вызывается при создании класса

__destruct() Вызывается при удалении класса

__call(string $name array $arguments)
__callStatic(string $name array $arguments)
Вызываются при обращении к не существующему методу динамично или статично

__get(string $name)
__set(string $name mixed $value)
вызывается при попытке получить или установить не определенное значение класса

__isset(string $name) : bool
__unset(string $name) : bool
выполняются при проверке существования или удаления не определенного свойства класса

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Больше волшебных методов класса

A

__serialize() : array { return []
__unserialize(array $data) : void
методы сериализации, используются обычно когда обьект нужно сохранить в файл или передать в БД а потом оттуда его загрузить

__toString() : string
вызывается при попытке преобразовать обьект в строку при выводе например echo xxx

__invoke(…values)
вызывается когда скрипт пытается выполнить обьект как функию

__debugInfo() : array
вызывается функией var_dump

__set_state(array $properties): obj
вызывается функций var_export

__clone()
вызывается при клонировании обьекта с помощью оператора clone

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

анонимный класс

A

класс без названия который создается в ограниченной области видимости и может быть применен для решения определенной задачи, может быть параметром фукнции или присвоен переменной
$var = new class {

}
Анонимный класс может наследоваться, реализовывать интерфейсы, создавать абстрактные классы

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Динамическое создание классов

A

Когда создаваемый экземпляр берет название одного из классов из переменной.
Название класса указанное в виде строки внутри переменной или массива не содержит пространства имен класса. поэтому перед созданием экземпляра нужно укзаать явно пространство имен
$obj = __NAMESPACE__ . “\” . $classname
$obj = new $obj();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Быстрое получение полного имени класса

A

Если переменная хранящая данные по обьекту будет содержать не просто строку а название класса то не нужно явно указывать пространство имен класса
$arr = [
0 => first::class,
1 => second::class ]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Функции при работе с классами

A

class_exists(classname::class); - проверяет наличие класса по полному названию класса переданному в параметре, и возвращает bool

method_exists(object propName)
property_exists(object propName)
Проверяют наличие метода или свойства в классе

get_class(obj) - возвращает полное название класса по переданному в параметре обьекту

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Проверка класса на принадлежность другому классу

A

с помощью оператора instanceof можно проверить является ли класс наследником другого класса

How well did you know this?
1
Not at all
2
3
4
5
Perfectly