2016-11-18 4 views

答えて

1

はこれを試してみてください。

$routes = [ 
    "/" => "index.htm", 
    "/user/[email protected]" => "user.htm", 
    "/user/@id" => "user.htm", 
]; 

foreach ($routes as $path => $file) 
{ 
    $f3->route("GET " . $path, 
    function ($f3) use ($file) 
    { 
     echo View::instance()->render($file); 
    } 
); 
} 
+1

ありがとうございました。しかし、これがなぜ機能するのか、私が使っている方法はどういうものなのか詳しく教えてもらえますか?もう一度ありがとう:D –

1

Bryan Velasteguiの回答が正しいです。しかし、ここであなたのコードが機能しなかった理由です:

  1. $f3->route()はそれを実行せず(「ルートハンドラ」と呼ばれる)関数に各ルートURI、をマッピングします。
  2. foreachループは、変数に、index.html,user.htmおよびuser.htm(やはり)の値を連続して格納します。したがって、ループの最後には、$fileuser.htmを保持します。
  3. $f3->run()を呼び出すと、フレームワークは現在のルートと一致するルートハンドラを実行します。このルートハンドラは、user.htmを保持するグローバル$file変数を参照します。

通常、globalキーワードを使用しないでください。それはちょうどあなたが直面したものと同様に、予期せぬ問題を引き起こします。また、コードのメンテナンス性には役立ちません。

use keywordに関するドキュメントを読んで、Bryan Velasteguiのコードがどのように機能しているかを理解することをお勧めします。

+0

友人に感謝、私は本当に新しいですし、非常に良い説明を取得しないでください。 – shinigamicorei7

関連する問題