#php #frameworks #redundancy
#php #фреймворки #избыточность
Вопрос:
Я стремлюсь уменьшить избыточность в коде, распространяемом на всех веб-сайтах. Я поработал с несколькими фреймворками, но не могу придумать ни одного, который позволил бы вам ЛЕГКО отделить код фреймворка от кода сайта, одновременно предоставляя его нескольким сайтам.
Какие фреймворки PHP могут сделать это легко?
РЕДАКТИРОВАТЬ — Я пытаюсь определить, какие фреймворки проще всего использовать.. Я уже предполагал, что почти все могут быть общими, но какие фреймворки ориентированы на совместное использование? Похоже, Yii рекомендует размещать код фреймворка за пределами кода сайта, это хорошее начало.
Если кто-то уже использует один и тот же код фреймворка на разных сайтах, я хотел бы узнать об этом.
Комментарии:
1. На самом деле многие из них имеют. Даже мой (как в моем собственном фреймворке homebrew).
2. Спасибо за множество отличных быстрых ответов!
Ответ №1:
Это довольно легко сделать с помощью Fuel (http://fuelphp.com ).
Каждый веб-сайт имеет index.php где определены некоторые пути:
/**
* Set all the paths here
*/
$app_path = '../fuel/app/';
$package_path = '../fuel/packages/';
$core_path = '../fuel/core/';
Как вы можете видеть, вы можете совместно использовать ядро и пакеты в центральном репозитории и создать единое приложение и общие папки для каждого веб-сайта.
Вы даже можете поделиться приложением с разными веб-сайтами, настраивая материал (скажем, название сайта или используемую базу данных), просто установив другую среду в .htaccess. Это работает «из коробки», например, для сайтов разработки / стадии / производства, но может быть расширено на что угодно. Вы также можете настроить центральные пакеты для использования в нескольких приложениях. Мощный, простой и просто работающий.
Комментарии:
1. Спасибо, мне нужно будет проверить Fuel. С этим у меня пока нет большого опыта.
Ответ №2:
Многие могут это сделать. Например, YII
предполагается, что он установлен ЗА пределами вашего корневого каталога www ( httpdocs
, /var/www/
или что-то в этом роде). Вы можете использовать несколько сайтов, чтобы указать на этот базовый каталог.
Я думаю, что любая платформа (или часть), которая не требует специальных настроек для вашего сайта, может быть разделена между несколькими сайтами.
Ответ №3:
Я верю, что Zend может сделать то, что вы просите, возможно, даже Symfony и Fuel, и я уверен, что многие другие фреймворки, которые позволяют вам выбирать, какие части его использовать, позволят вам это сделать.
Однако для этого потребуется немного больше настроек, чтобы все это заработало. Отчасти поэтому я в конечном итоге создал свой собственный фреймворк.
Ответ №4:
У Symfony есть. Мне нравится фреймворк Symfony, и он поставляется с несколькими отличными фреймворками. Вам могут понравиться Routing и YAML. Один мой знакомый называет Symfony лучшим фреймворком php.
Некоторые компоненты имеют свои собственные конкретные сайты
Ответ №5:
Symfony2 подходит для ваших нужд. Это фреймворк с полным стеком и множеством автономных компонентов. Он работает с «пакетами», пакет — это своего рода контейнер с полной логикой (контроллеры, объекты модели, представления, активы, конфигурация, …). Это означает, что вы пишете один пакет и можете использовать его повторно без каких-либо проблем.
Но вы также можете рассмотреть symfony 1.4. Один проект может обрабатывать множество приложений, поэтому ваша модель является общей для всех этих приложений, и один и тот же код может быть повторно использован во всех приложениях. Обратите внимание, что приложение может быть полноценным веб-сайтом.
Ответ №6:
Я не могу придумать ни одного фреймворка, который делал бы это изначально, но вы могли бы использовать несколько репозиториев SVN (или hg и т.д.) Для достижения этой цели. Пример использования CakePHP:
- В 1 репозитории есть файлы CakePHP по умолчанию. Если вы хотите обновить CakePHP, вы обновляете это репозиторий в будущем.
- 1 репозиторий на веб-сайт, который хранит все внутри папки вашего приложения.
Это не встроенная функциональность, но и настроить ее не очень сложно.