3

CakePHP でいくつかの小さな Web サイトと 1 つの中規模のニュース サイトを開発しました。しかし、私が現在置かれている状況は異なり、先に進む前に厳しい分析が必要なため、CakePHP コミュニティに参加しました。

私は現在、いくつかの Web サイト (5 ~ 10) を処理するためにストレート PHP コードを使用している会社で働いており、それらすべてが Db 接続などを持つ 1 つのグローバル インクルード フォルダーを使用しています。すべてを最新バージョンの PHP (現在は 5.1 を使用) にアップグレードし、その過程で、CakePHP を使用してバックエンド全体をアップグレードすることを考えています。

まず、これでよろしいでしょうか?私は CakePHP のプロジェクトに取り組んでいるときはワクワクしますが、問題が発生したことは一度もありません。

第二に、Cake の専門家から、Cake のコア部分には何も追加すべきではないという意見を読みました。ただし、すべてのサイトからアクセスする必要があるファイルを作成する場合、それらはどこに移動できますか?

現在、すべてのサイトが OOP ですが、Cake は MVC です。グローバル OOP クラス (すべてのサイトで使用される) をコントローラ/モデルまたはベンダー クラスに変換して Cake Core に配置する必要がありますか?

一般的に、最良のアプローチは何ですか?

CakePHP の複数サイトへのアプローチ イメージ

4

1 に答える 1

2

出来るよ

標準の cakephp インストールのレイアウトは次のとおりです。

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

app ディレクトリ内のすべてが 1 つのアプリケーションに固有です。rootおよびdirector はlib、インストール内のすべてのアプリケーションに適用されます。つまり、何も変更せずにこれを行うことができます:pluginsvendors

$ cd root
$ cp -r app newapp

その結果:

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

または にあるすべてのプラグインまたはベンダーをpluginsロードvendorsできます。異常なことは何もせずに、両方のアプリケーションで、たとえば次のようにします。

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

どちらのアプリケーションにも、デバッグ キットをロードして使用するオプションがあります。

同じことを行うが、アプリケーション自体から共通コードの場所を分離する本の指示に従うこともできます。

依存関係を共有することの制限に注意してください

このように複数のアプリケーションを管理する際の問題は、すべてのアプリケーションが同じバージョンの Cake と、すべての共有プラグイン/ベンダーの同じバージョンに関連付けられていることです。CakePHP はアイドル状態のプロジェクトではなく、継続的に開発されています。使用するほとんどのプラグイン/ベンダーと同様です。簡単に解決できるプラグインとベンダーの場合、インストール全体のフォルダーの前に、アプリケーションの Plugin/Vendor フォルダーがチェックされます。

ただし、1 つのコアと 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 に答える