PHP应用程序URL路由

PHP应用程序URL路由,第1张

PHP应用程序URL路由

我更喜欢使用reg
ex而不是制作自己的格式,因为这是常识。我写了一个小类,使我可以嵌套这些正则表达式路由表。我曾经使用过类似的通过继承实现的方法,但是它不需要继承,因此我重写了它。

我对一个键进行正则表达式,然后映射到我自己的控制字符串。请看下面的例子。我访问了

/api/related/joe
我的路由器类,创建了一个新对象
ApiController
调用它的方法
relateddocuments(array('tags'=> 'joe'));

// the 12 strips the subdirectory my app is running in$index = urldepre(substr($_SERVER["REQUEST_URI"], 12));Route::process($index, array(    "#^api/related/(.*)$#Di"    => "ApiController/relateddocuments/tags",    "#^thread/(.*)/post$#Di"    => "ThreadController/post/title",    "#^thread/(.*)/reply$#Di"   => "ThreadController/reply/title",    "#^thread/(.*)$#Di"         => "ThreadController/thread/title",    "#^ajax/tag/(.*)/(.*)$#Di"  => "TagController/add/id/tags",    "#^ajax/reply/(.*)/post$#Di"=> "ThreadController/ajaxPost/id",    "#^ajax/reply/(.*)$#Di"     => "ArticleController/newReply/id",    "#^ajax/toggle/(.*)$#Di"    => "ApiController/toggle/toggle",    "#^$#Di"         => "HomeController",));

为了减少错误并简化 *** 作,您可以细分表。这样,您可以将路由表放入它控制的类中。以上面的示例为例,您可以将三个线程调用合并为一个。

Route::process($index, array(    "#^api/related/(.*)$#Di"    => "ApiController/relateddocuments/tags",    "#^thread/(.*)$#Di"         => "ThreadController/route/uri",    "#^ajax/tag/(.*)/(.*)$#Di"  => "TagController/add/id/tags",    "#^ajax/reply/(.*)/post$#Di"=> "ThreadController/ajaxPost/id",    "#^ajax/reply/(.*)$#Di"     => "ArticleController/newReply/id",    "#^ajax/toggle/(.*)$#Di"    => "ApiController/toggle/toggle",    "#^$#Di"         => "HomeController",));

然后定义ThreadController :: route就像这样。

function route($args) {    Route::process($args['uri'], array(        "#^(.*)/post$#Di"    => "ThreadController/post/title",        "#^(.*)/reply$#Di"   => "ThreadController/reply/title",        "#^(.*)$#Di"         => "ThreadController/thread/title",    ));}

您也可以在右侧为路由字符串定义任何默认值。只是不要忘了将它们记录下来,否则您将使人们感到困惑。如果您在右侧未包含函数名称,则当前正在调用索引。这是我当前的代码。您可能需要更改它以处理您喜欢的错误和/或默认 *** 作。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存