2017-12-30 47 views
0

私はしばらくの間グーグルで行ってきましたが、私の問題の解決策を見つけることができないようです。私は2つのアプリケーション(バックエンドとフロントエンド)を持つCodeigniterインスタンスを持っています。CodeIgniter 3アプリケーションパッケージ間でコアモデルを共有

だから私は、私のこのようなアプリケーションのフォルダに設定しました:今私は間の類似性を持っているバックエンド

  • ウェブルート/アプリケーション
    • フロントエンド
    • をモデルなどの2つのアプリケーション。

      • ウェブルート/アプリケーション
        • フロントエンド(標準のCodeIgniter:だから私は、この(私は場所を正確に覚えていないことができ、インターネット上のどこかにそれを行うには、この方法を発見した)のように、「一般的な」パッケージを作成しました構造)
        • バックエンド(標準CodeIgniterの構造)
        • 共通
          • 設定/
          • helpe RS/
          • 言語/
          • ライブラリ/
          • モデル/

      それは適切に自動的にロードされますと、私は背中とフロントエンド間のモデルと、そのようなを共有することができます。しかし、今私はMY_Modelを導入したいと思っています。これはアプリケーションフォルダのcoreディレクトリに置かなければなりません。もちろん、3つのアプリケーションパッケージでモデルを共有したいと思っています。 (私は、フロントエンドとバックエンドのモデルがそれを拡張することを望んでいますが、共通パッケージのモデルも必要です)。

      これは私が立ち往生する場所です。私はcommonアプリケーションパッケージにcoreフォルダを入れようとしましたが、commonパッケージのモデルでそれを拡張することはできません。

      Class 'MY_Model' not found in /webroot/application/common/models/News_model.php on line 11 
      

      私はどちらか、他のパッケージにそれを拡張するように見える傾けます。

      Class 'MY_Model' not found in /webroot/application/backend/models/Ad_model.php 
      

      私はMY_modelクラスを3回複製し、3種類のファイルに私はいくつかの新しい機能を追加するたびに編集したいいけません。

      これを解決する方法はありますか?私はそれを把握しているようです。

      ありがとうございます!

答えて

0

コアディレクトリを外部に移動し、それを各構造にシンボリックリンクすることができます。

$ ln -s {common/core} {frontend/core} 
$ ln -s {common/core} {backend/core} 
+0

シンボリックリンクはオプションではありません。その共有ホスティングと私は、サーバーへのシェルアクセスを持っていない。グッド思考、ありがとう:) – Clemenz

+0

それはちょうどその1つのファイルです。それぞれの場所にファイルを置き、外側にファイルを含めることができます。 – Phright

+0

あなたは手動で 'require_once'を実行しますか?しかし、まだ、もし私がファイルに変更を加えると、私はもう一方を編集する必要があることを記憶しておきたいとは思わない。また、私は重複を減らしたい、あるいはそれを導入したくない。 – Clemenz

関連する問題