2011-07-19 8 views
0

私はこのフレームワークが初めてです。 私は、カスタムルートを定義する方法について検索してきたと私は、このコードを見つけました:私は、戻り値を削除しようとしました、それはまだ動作Zend Framework:戻り値がないとブートストラップのinitでリソースインスタンスを返すことの違いは何ですか?

protected function _initRouter(){ 
    $front = Zend_Controller_Front::getInstance(); 
    $router = $front->getRouter(); 

    $router->addRoute(
      'listOnIndex',  
      new Zend_Controller_Router_Route('/list', array('controller' => 'index', 'action' => 'list')) 
     ); 

return $router; 
} 

。何故ですか?
インスタンスを返すことは本当に必要ですか? ありがとうございました! :)

答えて

9

あなたは、戻り値は、後に可能な限りの検索のために、ブートストラップに「保存」され、_initSomeResource()という名前のブートストラップメソッドから値を返す場合:ブートストラップクラスは呼び出しとして渡されているので

$bootstrap->getResource('SomeResource') 

コントローラへの引数は、使用してコントローラにこれらのリソースにアクセスすることができます:あなたの状況では

$bootstrap = $this->getInvokeArg('bootstrap'); 
$someResource = $bootstrap->getResource('SomeResource'); 

を、あなたが設定されているリソースは、ルータであり、あなたが後でそれにアクセスする必要はありませんでした。この場合、_initRouter()からそれを返さないと、あなたを傷つけることはありませんでした。

+0

私は参照してください。そんなにありがとう!このフレームワークには、知られている必要がある多くの回避策があります。私が慣れていたものとはまったく違って... – Rei

+0

ええ、あなたの頭を掴むのが大好きです。私は以前よりも優れていますが、常に新しいものを学んでいます。行け!行け!行け! –

+1

後で取得するために、データベースアダプタオブジェクトをレジストリ内に先に保存していましたが、必要はありませんでした。 –

2

この場合、$ routerインスタンスを返す必要はありません。

シングルトンパターンを使用してルータオブジェクトを取得し、addRouteメソッドを使用して新しいルートを設定するので、追加されたルートは次の処理(このインスタンスだけが使用されている限り)に保存されます。

+0

さらに詳しく説明していただきありがとうございます。おそらく、私はこのフレームワークにあるシングルトンクラスを調べようとします。 – Rei

関連する問題