Общая папка для ядра CakePHP
Многие знают, что можно использовать общую папку CakePHP, а в папках проектов оставлять фактически содержимое папки app. Это упрощает поддержку - нужно обновлять cake только в одном месте.
Но часто приложение работает на нескольких компьютерах. Например, у меня есть 3 основных места в которых я их запускаю: мой компьютер (здесь можно делать что угодно), общий локальный сервер компании (здесь код, который работает, но в стадии тестирования) и production-сервер (Интернет или локальная сеть клиента). Некоторые из них под Windows, некоторые под FreeBSD. Поэтому никак нельзя сделать, чтобы путь был одним и тем же.
А душа просит одного кода без всяких trunk. Поэтому я пишу в app\webroot\index.php вместо
вот это
Мне этого хватает. Но для универсальности можно сделать так
-
// you should list possible directories with cake here
-
-
foreach ($corePaths as $corePath) {
-
break;
-
}
-
}
-
-
-
}
Обратите внимание, что путь к папкам указывается без завершающего слеша; под Windows можно использовать / вместо \\ (хотя и советуют писать DS). В папке должна быть подпапка cake с ядром cake. Также я в эту папку кладу подпапку vendors в которой находится simpletest.
Только сейчас заметил, что не нахожу более глобального разделения, чем контроллеры
Неужели и вправду нет чего-то подобного модулям в Zend Framework?
@Sam:
components, helpers, behaviors, plugins. Разве этого мало?
Если тебе кажется, что да, то покажи на примере, чего именно нужно достичь.
http://framework.zend.com/manual/en/zend.controller.modular.html
app/
default/
controllers/
blog/
controllers/
models/
views/
news/
controllers/
models/
views/
Хочется разделить приложение на независимые модули. Вот написал я, допустим, блог. В следующий проект я интегрирую его уже как продукт. Просто копируя модуль.
Есть 2 варианта:
1. Рядом с папкой app создать папку blog. Тогда можно будет обращаться к нему как site.com/blog/, а по site.com будет выводиться приложение по-умолчанию - app.
Используется, когда не нужно взаимодействие между модулями.
2. Plugins - http://manual.cakephp.org/chapter/plugins
Из основного приложения можно вызывать методы плагина.
Плагины можно как копировать в нужные приложения, так и вынести в общую папку, чтобы использовать всеми приложениями. Очень похоже на то, что ты ищешь.
Сравни: Cake - /pluginname/controllername/action; Zend - :module/:controller/:action/*
Кто-то у кого-то тырит идеи :). Я думаю, что все у Rails, но могу ошибаться.
У меня, к сожалению, пока не нашлось таких MVC-блоков, чтобы выносить их в плагины, поэтому я не очень в них разбираюсь, но идея мне очень нравится. Надо будет внимательнее задуматься, что можно вынести общего из своих программ.
[...] предыдущем посте Sam, чей блог rmcreative.ru я сам читаю и часто кидаю ссылки [...]
[...] предыдущем посте Sam, чей блог rmcreative.ru я сам читаю и часто кидаю ссылки [...]