Я работаю над мультисайтовой CMS в Zend Framework.Я дошел до того, что мне нужно переопределить модуль из приложения / папки в папке моего сайта / приложения.Чуть лучше объяснение моей проблемы:Вот дерево моего приложения (важная часть):
library/
application/
module1/
controllers/
models/
....
module2/
controllers/
models/
....
websites/
website1.com/
application/
module1/
controllers/
models/
....
Итак, что мне нужно сделать, это то, что module1 / на веб-сайте / website1.com / application / override module1 / в приложении, ЕСЛИ он существует.Я хочу, чтобы все в module1 / в папке вебсайтов переопределяло все в основной папке приложения.Я также хотел бы, чтобы в этом модуле было 2 контроллера (например, IndexController и TestController) и если я поместил только TestController в папку веб-сайтов в module1 / controllers, чтобы переопределить ТОЛЬКО TestController из папки Application и получить IndexController из главной папки.Извините, если мне не удалось объяснить, чего именно я пытаюсь достичь.Если что-то неясно, пожалуйста, спросите.Спасибо. Редактировать: Окей, прежде всего - спасибо за ваши комментарии.Причина наличия сайтов / папок - в основном из-за vhost, так как я предпочитаю, чтобы на всех моих сайтах были отдельные (публичные?) Папки, а причина наличия одной библиотеки с папкой приложения - в том, что, очевидно, причины обновления (поэтому, когда яНапример, обновите Zend - мне не нужно обновлять его для каждого веб-сайта).Скорее всего, я редко использую опцию переопределения для контроллеров, и да, я бы даже предпочел, если бы я мог, например, расширить основной контроллер (например, IndexController) и переопределить некоторые функции, но я подумал, что это намного сложнее, чем переопределить весьучебный класс.Вот полная структура моего приложения:
library/ - Library folder contains Zend and many other classes that I'll use in my application.
Zend - Zend Framework
MyCMS - Classes from my old CMS.
sites/ - Folder that contains websties.
website_1 - Website one.
application/ - Application folder for website one. If I need to redefine module or something. So, if I need to override module: main_module, I'll create folder main_module here with files that I want to override.
config/ - Configuration for website_1 - if I need to override, for example, application.ini
lang/ - Language files for this specific website.
templates/ - Templates folder for website (layouts and templates). By the way, I'm using smarty.
default/ - Main template.
layout/ - Layouts for Zend View.
css/
js/
images/
modules/
files/ - Place to upload files in, for this website. This will contain user avatars and stuff.
index.php - Main file that runs bootstrap and application.
Bootstrap.php - Inherited bootstrap. In case I need to override some functions from default bootstrap.
application/ - Main folder that contains application modules and stuff.
main_module/
configs/ - Module configuration.
config.ini
controllers/ - Controllers for this module.
modules/ - Submodules. There are like boxes that I display on website. For example, if my main module is "news", here, I'll make new sub-module to display box with statistics.
submodule/
services/ - XML/JSON/whatever service. If someone targets controller in services with specific parametars, it'll return response in requested format.
controllers/ - Services will only have controllers.
configs/ - Configuration for this submodule.
controllers/ - Controllers for this submodule.
models/ - Models for this submodule.
lang/ - Language files for this submodule.
template/ - Templates for this submodule.
helpers/
css/
js/
images/
index.html
models/ - Models for main module.
lang/
services/ - Main module will also have services. See submodule services for explanation.
controllers/
template/
helpers/
css/
js/
images/
index.html
Bootstrap.php - This is main bootstrap file that every website's bootstrap file will extend (and override some methods - if needed).