0

CakePHP アプリケーション全体 (コントローラー、モデル、およびビュー) でアクセスできるグローバル変数をセットアップしたいと思います。変数の値は、アプリケーションに着信するリクエストごとに異なる場合があります。これを設定する最良の方法は何ですか?

私が考えたいくつかのオプション:

  1. この変数を設定するには、bootstrap.php で Configure::write を使用し、どこでも Configure::read を使用して値を読み取ります。Configure アレイの範囲に関する明確なドキュメントが見つからなかったため、これが最適なオプションであるかどうかはわかりません。Configure は通常、サイト全体/アプリケーション全体の変数に使用されるように見えるため、各 HTTP リクエストに独自の Configure 配列があるかどうかはわかりません。

  2. この値を、bootstrap.php 内から $GLOBALS 配列に書き込みます。これは良い考えですか?マイナス面は考えられませんが、 $GLOBALS の使用は推奨されていないようです。

  3. リクエストにスコープされ、スレッドセーフであり、そのリクエストのアプリケーション全体で利用可能な、bootstrap.php から何らかの方法でグローバル変数をエクスポートまたは設定します。これが可能かどうか/方法がわからない。

助けてください!

4

2 に答える 2

3

ここであなたは友達ですか:

AppController で:

public function beforeFilter() {

    parent::beforeFilter();
    Configure::write('you_variable', 'your_value');

}

アプリ (コントローラー、モデル、ビュー) のどこでも値を読み取ることができます。

Configure::read('your_variable);
于 2013-03-22T10:56:33.790 に答える
0

AppController に public 変数を持ち、 beforeFilter() 関数でそれに値を与えることができます。このようなもの

class AppController extends Controller {

    /**
     * The dependency components needed
     * @var array An array of component names
     */
    public $components = array(
        'Cookie',
        'Session',
        'Auth',
    );

    /**
     * The dependency Models needed
     * @var array An array of model names
    */
    public $uses = array(
        'User'
        );

    /**
     * Your variable
    */
    public $yourVariable = null;



    public function beforeFilter() {
        parent::beforeFilter();
        $this->yourVariable = 'Your request specific data';            
    }
于 2013-03-22T08:49:54.417 に答える