一个CakePHP库,用于多个应用程序

时间:2013-07-29 16:22:05

标签: cakephp

我在CakePHP和一个中型新闻网站上开发了几个小型网站。但是,我现在所处的情况不同,需要进行一些严格的分析才能继续进行,这将我带到CakePHP社区。

我正在为一家公司工作,该公司目前使用直接PHP代码来处理多个网站(5-10),并且所有这些公司都使用一个全局包含文件夹,其中包含Db连接等等。所有这些的问题是,我们希望将所有内容升级到最新版本的PHP(目前使用5.1),在此过程中,我正在考虑使用CakePHP升级整个后端。

首先,这是一个好主意吗?我在使用CakePHP项目时感到很兴奋,从未遇到任何问题。

其次,我从Cake专家那里读到,我们不应该在Cake的核心方面添加任何东西。但是,如果我要创建需要被所有站点访问的文件,那些可以去哪里?

目前,所有网站都是OOP,但Cake是MVC。是否应将全局OOP类(由所有站点使用)转换为控制器/模型或供应商类并放置在Cake Core中?

一般来说,最好的方法是什么?

CakePHP multiple sites approach Image

1 个答案:

答案 0 :(得分:1)

你可以这样做

layout of a standard cakephp install是:

root
    /app
        ..
        /Plugin
        /Vendor
        /webroot
    /lib
        /Cake
    /plugins
    /vendors

app目录中的所有内容都特定于一个应用程序。根libpluginsvendors导向器适用于安装中的所有应用程序。即没有修改任何东西你可以这样做:

$ cd root
$ cp -r app newapp

导致:

root
    /app
        ..
        /Plugin
        /Vendor
        /webroot
    /newapp
        ..
        /Plugin
        /Vendor
        /webroot
    /lib
        /Cake
    /plugins
    /vendors

pluginsvendors中的任何插件或供应商都可以在两个应用程序中加载,而不会做任何异常的事情,例如以下内容:

root
    /app
        ..
        /Plugin
        /Vendor
        /webroot
    /newapp
        ..
        /Plugin
        /Vendor
        /webroot
    /lib
        /Cake
    /plugins
        /DebugKit
    /vendors

两个应用程序都可以选择加载和使用调试工具包。

您也可以简单地follow the instructions in the book执行相同的操作,但将公共代码的位置与应用程序本身分开。

请注意共享依赖项的限制

管理这样的多个应用程序的问题是所有应用程序都绑定到相同版本的蛋糕,以及所有共享插件/供应商的相同版本。 CakePHP不是一个空闲的项目,它正在不断发展 - 可能是您选择使用的大多数插件/供应商。对于易于解决的插件和供应商,在安装范围的文件夹之前检查应用程序插件/供应商文件夹。

然而,不是拥有一个核心和n个应用程序 - 对于n个应用程序进行n次完整安装是一个更强大的想法:

/root
    /myapp
        /app
            /Plugin
            /Vendor
            /webroot
        /lib
            /Cake
        /plugins
        /vendors
    /app2
        /app
            /Plugin
            /Vendor
            /webroot
        /lib
            /Cake
        /plugins
        /vendors
    etc.

这样,新应用程序可以使用当前版本的Cake,而不会影响任何现有的应用程序。