1

すべてのコントローラーで使用できる変数値を設定する場所と方法。私は zend レジストリを使用したくないし、Zend_Controller_Action を拡張したくありません。別の方法はありますか?たとえば、設定したいだけです:

$a = "テスト";

そしてそれをダンプするインデックスコントローラーで:

class IndexController extends Zend_Controller_Action {

    パブリック関数indexAction(){

            var_dump($a);
        }
}
4

2 に答える 2

1

グローバル変数は、オブジェクト指向プログラミングの目的を台無しにします... 名前空間またはカスタム構成を使用します。

解決策 1

セッション Zend_Session_Namespace を使用します。Zend_Session_Namespace の使用方法に関するドキュメントはこちらです。

  1. ブートストラップなどの名前空間に値を設定します(適切と思われる場所ならどこでも)
  2. コントローラー/モデル/その他の名前空間から値を取得します

解決策 2

または、静的プロパティを持つ新しいクラスを作成し、そのセッター/ゲッターを使用して値を設定および取得することもできます。

例えば

class SomeClass
{    
    static $hello = 'world';
}

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        var_dump(SomeClass::$hello);
    }
}
于 2012-12-17T16:35:54.413 に答える
0

リクエスト オブジェクトに変数を追加できます。

$this->getRequest()->setParam('a', 'hello');

次に、次を使用して取得します。

$this->getRequest()->getParam('a);

ただし、必要なパラメーターを誤って上書きする可能性があるため、これは最善の方法ではありません。

于 2012-12-21T14:16:10.107 に答える