Как подменить класс? система с которой я работаю возвращает мне обьект типа Content
этот класс жестко прописан в логике и нет возможности подменить через параметры конфигурации
мне нужно добавить в него пару методов типа Content->getChildren()
который будет делать дополнительный запрос в БД
я сделалclass myContent extends Content
{
public function __construct( $obj )
{
foreach ($obj as $key => $value)
{
$this->$key = $value;
}
}
public function getChildren()
{ . . .}
}
но получил ошибки когда передаю этот обьект в разные методы
- ибо там где-то проверки на instanseof
как решить эту задачу?
может можно просто через композер подменить автолоад оригинального класса на мой?

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

Да, вы можете использовать композер для подмены оригинального класса на ваш собственный. Для этого вам нужно создать файл composer.json в корне вашего проекта и добавить следующую конфигурацию:

{
"autoload": {
"psr-4": {
"OriginalNamespace\\": "path/to/original/classes/",
"MyNamespace\\": "path/to/your/classes/"
}
}
}

Замените OriginalNamespace на пространство имён оригинального класса и MyNamespace на пространство имён вашего класса. Укажите пути к соответствующим директориям.

После этого выполните команду composer dump-autoload, чтобы обновить автозагрузку.

Теперь классы из оригинального пространства имён будут загружаться из вашего класса.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир