Возможность настраиваемых классов, но с единым именем класса

Предположим, вы создаете веб-приложение, которое однажды станет упакованным продуктом, которое пользователи захотят расширить и настроить.

Он поставляется с базовой библиотекой, состоящей из файлов PHP, содержащих классы:

/library/
/library/frontend.class.php
/library/filesystem.class.php
/library/backend.class.php

Теперь предположим, что вы хотите сохранитьчистое ядро что пользователи не могут исправлять. Тем не менее, вы хотите, чтобы пользователь мог настроить каждую гайку и болт, если это будет необходимо.

Моя текущая идея состоит в том, чтобы создать механизм автозагрузки, который, когда создается экземпляр класса, сначала загружает ядро, включает:

/library/frontend.class.php

затем он переключается наuser каталог и смотрит, есть ли включение с таким же именем:

 /user/library/frontend.class.php

если таковой существует, он также включает это.

Очевидно, что пользовательское включение должно содержать определение класса, которое расширяет определение в основном включении.

Теперь мой вопрос: как бы я создал такой класс? В конце концов, я всегда могу быть уверен, что есть определение:

class frontend_core

но я не могу быть уверен, что есть

class frontend_user extends frontend_core

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

Есть ли умный способ, идея или шаблон, как этого добиться?

Конечно, я мог бы написать простую фабричную вспомогательную функцию, которая ищетuser сначала класс, а затем дляcore class и возвращает инициализированный объект, но мне бы очень хотелось, чтобы это было как можно проще и понятнее, потому что, как я уже сказал, это будет упакованный продукт.

Я ищу умный трюк или шаблон, который использует как можно меньше кода и вводит как можно меньше новых функциональных возможностей.

Ответы на вопрос(5)

Ваш ответ на вопрос