У нас есть продукт, который слегка настраивается для каждого клиента.Точная настройка непредсказуема - мы предполагаем, что любая точка в коде может нуждаться в изменении.Однако мы хотим сохранить одну кодовую базу, поскольку 90 +% кода будут идентичны, поэтому нам не нужно объединять каждое обновление или новую функцию с каждым клиентом отдельно.
Как это можно сделать?
Проект написан на PHP с фреймворком Yii.
По сути, мы хотели бы что-то вроде этого: у каждого клиента будет папка с «зеркалом» кода.Это «зеркало» будет включать только те классы, которые настроены для клиента.Чем во время выполнения будет известна идентификация клиентов, и каждое упоминание имени класса будет разрешено в общую версию класса - если для этого клиента не существует специфической для клиента версии или в настроенную для клиента версию этого класса - еслитакая версия существует.
Буду признателен за комментарии по поводу общего вопроса проектирования.
Любые комментарии по поводу вышеупомянутого решения.
Существуют ли другие способы достижения того, чего я хочу достичь?
Может быть, какой-нибудь инструмент для генерации кодадля генерации конкретной версии клиента из текущего основного кода?
А также есть вопрос реализации.Как это можно реализовать в PHP и Yii?
Сначала я подумал об использовании PHP __autoload.Тем не менее, он в любом случае выберет только одну версию класса.И это проблема, потому что нам нужно будет выбирать клиентскую версию каждый раз, кроме одной: при определении клиентской версии класса мы будем расширять универсальную версию этого класса.Таким образом, версия классов не может быть разрешена во время загрузки, обе должны быть загружены, и клиент будет использоваться каждый раз, кроме одного.
Спасибо