2016-10-15 12 views

答えて

2

これは実際にはいくつかのステップが必要です。私はちょうどそれを少し説明するいくつかの例のコードを書いた。 機能コードであることはできません。

$requestArray = explode('/', $_SERVER['REQUEST_URI']); 

今、私たちがしている2つの配列の比較する:$ _SERVERスーパーグローバルが付属していますREQUEST_URIため

$route = '/blogs/{title}'; 
$routeArray = explode('/', $route); 

同じこと:へ

まず最初は、スニペットにルートを破るためにあります要素別:

if(count($routeArray) != count($requestArray)) { 
    return FALSE; // the route does not match 
} 

for($i = 0 ; $i < count($routeArray) ; $i++) 
{ 
    if($routeArray[$i][0] != '{' && $routeArray[$i] != $requestArray[$i]) { 
     return FALSE; // the route does not match 
    } 
} 

return TRUE; // still here? route matches! 

最初のforループの実行は、 'blogs' sta rtsと '{'または 'blogs'が 'blogs'と同じ場合。

2回目のforループは、 '{title}'が '{'で始まるか '{title}'が 'blog-title'と同じであるかを比較します。

この他にも、Symfonyルータは、REQUEST_METHODが有効かどうかをチェックします。例えばGET、POST、PUT、DELETEを実行します。

+0

Thnxそれは今、私が探していた正確にはっきりしています。 – SlimenTN

0

こんにちはSlimen私は私の答えはあなたを助けることを願っています:

それがこの仕事をして、ルータコンポーネントです。

あなたのアプリケーションのWebページにアクセスしよう:

カーネルのrouting.ymlファイルを解析するために、ルータのコンポーネントに尋ねます。したがって、ルータは現在のURLをrouting.ymlで定義されたルートと照合しようとします。

ルータがrouting.ymlのルート定義と一致すると、彼はこのルートのパラメータ(実行するコントローラと、実行されるコントローラに与えるパラメータ(newsIdやユーザーIDなど))。

ルータがrouting.ymlで経路定義を解析すると、収集した情報をカーネルに渡します。

そして、カーネルは実行するコントローラと、そのコントローラに与えるべきどのパラメータを知るようになりました。

+0

あなたの答えはThnxですが、私はその暗黙について質問していました。ルータがurlを解析し、URLの静的な側面と動的な側面を定義する方法。 – SlimenTN

関連する問題