Как подменить класс? система с которой я работаю возвращает мне обьект типа 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
271 +1
0
Ответы
1

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

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

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

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

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

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