3

我用 CakePHP 开发了几个小型网站和一个中型新闻网站。然而,我现在的情况不同,需要在继续之前进行一些艰难的分析,这将我带到了 CakePHP 社区。

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

首先,这是个好主意吗?在从事 CakePHP 项目时,我感到很兴奋,而且从来没有遇到过任何问题。

其次,我从 Cake 专家那里了解到,我们不应该在 Cake 的核心部分添加任何内容。但是,如果我要创建所有站点都需要访问的文件,这些文件会去哪里?

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

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

CakePHP 多站点方法 Image

4

1 回答 1

2

你可以这样做

标准 cakephp 安装的布局是:

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

app 目录中的所有内容都特定于一个应用程序。rootlib和导向pluginsvendors适用于安装中的所有应用程序。即无需修改任何内容,您可以执行以下操作:

$ 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

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

您也可以简单地按照书中的说明进行操作做同样的事情,但将公共代码的位置与应用程序本身分开。

请注意共享依赖项的限制

像这样管理多个应用程序的问题在于,所有应用程序都绑定到相同版本的 cake 以及所有共享插件/供应商的相同版本。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,而不影响任何现有的应用程序。

于 2013-07-30T16:17:00.003 回答