2017-07-17 11 views
0

私は別の場所に配置されているアプリケーションで作業しています。コードネイターが独自のコントローラーをオーバーライド

場所によっては、一部のコントローラ/モデル/ビューの機能が異なる場合、このクラスをオーバーライド/拡張​​する方法はありますか? (私は、将来のリリースで問題につながるので、コードベースを直接変更したくない) 私は、コアクラス/関数のMY_オーバーライドに似た方法を探しています。

私はここで、実際のコードを示しcan'tとして、私が達成したいものの簡単な例です:

として使用される通常の基本的なコントローラは、ほとんどの展開である。

class SomeController extends CI_Controller { 
    ... 
    public function index() 
    { 
     $data['var'] = 10; 
     $this->load->view('someview',$data); 
    } 
    ... 
} 

class SomeController extends CI_Controller { 
    ... 
    public function index() 
    { 
     $data['var'] = 5; 
     $this->load->view('someview',$data); 
    } 
    ... 
} 

(このケースでは、唯一の変更は、VaRの値である)

:そして、ここだけの場所のための専用コントローラがどのように見える可能性がどのようです
+0

いくつかのコードを表示し、_ "いくつかのコントローラーが異なる動作をする" _という意味を説明したい場合があります。 –

+0

それはちょうど、いくつかの関数はいくつかの異なる結果を持つでしょう - 私はそれらが変更されることを予測することができるパラメータに依存します(設定ファイルのすべてを解くことは解決策ではありません) – jacksbox

+1

それはまったく役に立たない。どのような方法について話していますか?これが起こる可能性のある状況は何ですか? 「異なる結果」とはどういう意味ですか? _本当の情報で質問を更新してください。 –

答えて

0

location(a.k.a独立環境)に基づいてクラスを上書きするのではなく、変数を変更するだけの場合は、環境変数を使用してみてください。このために、私はそれがインストールされたら、作曲

composer require vlucas/phpdotenv 

経由DotEnvライブラリを使用することをお勧めします、ブートストラップファイル

のindex.php

require_once './vendor/autoload.php'; 

$dotenv = new Dotenv\Dotenv(__DIR__); 
$dotenv->load(); 

/* 
* -------------------------------------------------------------------- 
* LOAD THE BOOTSTRAP FILE 
... 
をロードする前に、一番下にあなたの index.phpにこれを追加

これがセットアップされると、getEnv()関数を使用して変数を取得できます。

.env例

CONTROLLER_VAR=5 
DB_HOST=localhost 
DB_PORT=3306 
... 

class SomeController extends CI_Controller { 
    ... 
    public function index() 
    { 
     $data['var'] = getEnv("CONTROLLER_VAR"); 
     $this->load->view('someview',$data); 
    } 
    ... 
} 

SomeControllerはまた、作曲者が自動的にロードされていることを確認します。

関連する問題