/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/php/php-507-19-006/main.php
45 строк
1 KB
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
<?php class User { private string $firstName = ''; private string $lastName = ''; private array $meta = []; // Ленивая инициализация свойства public function __get(string $name): mixed { if ($name === 'fullName') { return "{$this->firstName} {$this->lastName}"; } // Доступ к метаданным через маппинг if (isset($this->meta[$name])) { return $this->meta[$name]; } throw new \Exception("Свойство '{$name}' не найдено"); } // Динамические методы поиска public function __call(string $name, array $arguments): mixed { // Метод findByEmail if (str_starts_with($name, 'findBy')) { $field = lcfirst(substr($name, 6)); // превращаем Email -> email // Имитация запроса к БД return ["id" => 1, $field => $arguments[0]]; } throw new \BadMethodCallException("Метод {$name} не существует"); } } $user = new User(); $user->firstName = 'Алексей'; $user->lastName = 'Петров'; // Доступ к несуществующему свойству fullName echo $user->fullName . "\n"; // Алексей Петров // Вызов динамического метода $result = $user->findByEmail('alex@test.ru'); print_r($result); // Array ( [id] => 1 [email] => alex@test.ru )