Какими способами можно реализовать «цепное наследование php»? Допустим есть класс Base реализует __set __get и хранит единственное свойство $registry для хранение данных.
Есть еще два класса Controller и Entity
Нужна схема наследования Base > Controller > Entity.
Просто интересно, не собираюсь я использовать такой костыль! Трейты не предлагать - знаю.

21 Авг 2019 в 07:03
212 +1
0
Ответы
1

Существует несколько способов реализации цепного наследования в PHP без использования трейтов. Ниже приведены два из них:

Использование интерфейсов:interface RegistryInterface {
public function set($key, $value);
public function get($key);
}
class Base implements RegistryInterface {
protected $registry = [];
public function set($key, $value) {
$this->registry[$key] = $value;
}
public function get($key) {
return $this->registry[$key] ?? null;
}
}
class Controller extends Base {
// Дополнительные методы и свойства
}
class Entity extends Controller {
// Дополнительные методы и свойства
}
$instance = new Entity();
$instance->set('key', 'value');
echo $instance->get('key'); // Output: valueИспользование наследования:class Base {
protected $registry = [];
public function set($key, $value) {
$this->registry[$key] = $value;
}
public function get($key) {
return $this->registry[$key] ?? null;
}
}
class Controller extends Base {
// Дополнительные методы и свойства
}
class Entity extends Controller {
// Дополнительные методы и свойства
}
$instance = new Entity();
$instance->set('key', 'value');
echo $instance->get('key'); // Output: value

Оба способа позволяют организовать цепное наследование классов Base > Controller > Entity с помощью реализации общего интерфейса или использования наследования свойств и методов.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир