2011-07-26 12 views
2

私は、コントローラへの単純なURLマッピングをSymfony2の機能とよく似ています。しかし、それは私がSymfony2から欲しいものです。それ以外の部分は私にとってはあまりにも多くのことです。 YAML設定ファイルのsymfony2に似たコントローラへのカスタムPHP URL

blog_home: 
    pattern: /blog 
    defaults: { _controller: BlogBundle:Blog:index } 

blog_show: 
    pattern: /blog/{slug} 
    defaults: { _controller: BlogBundle:Blog:show } 

:Symfony2のが何をするか分からない人のために

YAMLはまったく問題ありません。私は同じ機能を達成したいだけです。カスタムURLをコントローラー機能にマップできるようにする。

オープンソースのマッピングクラスまたはルーティングフレームワークですか?たぶんいくつかのチュートリアルですか?自分のアイデアを作るには?どんな提案も役に立ちます。

私はPHPウィズだと言及する必要がありますが、私は十分に知っているか、多分少し不足しています。だからこそ、私はフル機能のフレームワークに入りたくないのです。

+0

a)symfonyのようにしたいのであれば、なぜsymfonyを使用しないのですか? b)symfonyのようにしたいのであれば、なぜsymfonyのソースを調べないのでしょうか? – KingCrunch

+0

Symfony2にはDoctrine2が付属しています。これはDQL、Entity、Fixturesなどの言葉は聞いたことがありません。私のアプリが決してその雲を見ることができないほど複雑なもの。残念ながらSymfonyの残りの部分はそれほど意味がないので、私は、Symfonyの方法でルーティングしたいと思っています。あなたがルーティングのためのより良い選択肢を持っているなら、私は非常に提案に開放されています。 symfonyのソースについて私は自分のルーティングコンポーネント(https://github.com/symfony/Routing)をチェックアウトしましたが、そのソースとソースの使い方に関する情報はありません:ちょうど私がそれを調べていると言いましょうしばらくお待ちください。 – Aayush

+0

私が見る限り、あなたは、物事を使うことを余儀なくされていません、あなたは使いたくありません。 – KingCrunch

答えて

3

これは私のURLルーティングフレームワークです:

function route($url, $map) { 
    foreach($map as $re => $fn) { 
     if(preg_match("~^$re$~", $url, $args)) { 
      list($class, $method) = explode(".", $fn); 
      return call_user_func_array(
       array(new $class, $method), 
       array_slice($args, 1)); 
     } 
    } 
    error_404(); 
} 

$マップは

$map = array(
    "/blog/(.+)"   => "BlogController.show", 
    "/blog"    => "BlogController.blog", 
    "/foobar/(\d+)/(\w+)" => "Foobar.stuff", 
); 
のように、キーに対するURLと一致する正規表現で、値が文字列である「ClassName.method」配列であります

ルーティング関数は、最初に一致するパターンを見つけ、クラスをインスタンス化し、regexpサブグループを引数として渡すメソッドを呼び出します。したがって、URL「/ foobar/123/hello」はFoobar->stuff(123, 'hello')にルーティングされます。

+0

これはそれです。これは完璧です。ちょうど私が欲しいもの。どうもありがとうございます。とてもかっこいい。どうもありがとう。 – Aayush

関連する問題