我希望减少整个网站共享的代码冗余。我已经修补了几个框架,但不能想到任何允许您轻松地将框架代码从网站代码中分离出来,同时将其共享到多个网站。
哪些PHP框架可以很容易地做到这一点?
编辑-我试图确定哪些框架是最容易共享…我已经猜到几乎所有的框架都可以共享,但是哪些框架是面向共享的呢?听起来Yii建议将框架代码放在站点代码之外,这是一个好的开始。
如果有人已经在跨站点共享相同的框架代码,我很想知道这一点。
使用Fuel (http://fuelphp.com)很容易做到这一点。
每个网站都有一个index.php,其中定义了一些路径:
/**
* Set all the paths here
*/
$app_path = '../fuel/app/';
$package_path = '../fuel/packages/';
$core_path = '../fuel/core/';
正如你所看到的,你可以在一个中央存储库中共享核心和包,并为每个网站创建一个单独的应用程序和公共文件夹。
你甚至可以通过在。htaccess中设置不同的环境,与不同的网站共享一个应用程序来定制内容(比如,网站标题或使用的数据库)。例如,这对于开发/阶段/生产站点来说是开箱即用的,但可以扩展到任何地方。你也可以设置在多个应用中使用的中心包。
很多人都能做到这一点。例如,YII
应该安装在您的www-root目录之外(httpdocs
, /var/www/
或类似的东西)。您可以使用多个站点指向该基本目录。
任何框架(或部分),不需要你的网站的特定设置可以在多个网站之间共享。
我相信Zend可以做到你所要求的,甚至可能是Symfony和Fuel,我相信许多其他允许你选择使用它的哪个部分的框架也会让你做到这一点。
但是,这样做将需要您做更多的配置以使其全部运行。这就是为什么我最终创建了我自己的框架
Symfony。我喜欢Symfony框架,它附带了一些很棒的框架。您可能喜欢Routing和YAML。我认识的一个人说Symfony是最好的php框架。
Symfony组件
有些组件有自己的特定位置
你可以在这里找到一个非常好的文档
Symfony2适合您的需要。它是一个具有许多独立组件的全栈框架。它与"bundle"一起工作,bundle是一种具有完整逻辑(控制器、模型对象、视图、资产、配置等)的容器。这意味着你编写了一个bundle,你可以毫无问题地重用它。
但是你也可以考虑symfony 1.4。一个项目可以处理许多应用程序,因此您的模型可以在这些应用程序之间共享,并且相同的代码可以在所有应用程序中重用。注意一个应用程序可以是一个完整的网站。
我想不出有什么框架可以实现这个功能,但是您可以使用几个SVN(或hg等)存储库来完成这个功能。示例使用CakePHP:
- 1 repo有CakePHP默认文件。如果你想更新CakePHP,你可以在以后更新这个仓库。
- 每个网站一个repo,用于存储应用程序文件夹中的所有内容。
它没有内置功能,但设置起来也不是很困难。