Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实施;匹配“;从Rails到PHP的路径概念?_Php_Ruby On Rails - Fatal编程技术网

如何实施;匹配“;从Rails到PHP的路径概念?

如何实施;匹配“;从Rails到PHP的路径概念?,php,ruby-on-rails,Php,Ruby On Rails,特别是,我在应用程序的config/routes.rb文件中有以下内容: match "/:id" => "UrlDB#userreq" 在UrlDBController中: def userreq @request = UrlDB.find_by_url( (params[:id] ) end 我希望能够让相同的userreq方法响应所有传入的请求:id值是什么-我不知道如何在PHP/Apache中实现这一点 -丹尼尔(daniel)PHP给了你关于它的自由。您不必使用“某些

特别是,我在应用程序的config/routes.rb文件中有以下内容:

match "/:id" => "UrlDB#userreq"
在UrlDBController中:

def userreq
    @request = UrlDB.find_by_url( (params[:id] )
end
我希望能够让相同的userreq方法响应所有传入的请求:id值是什么-我不知道如何在PHP/Apache中实现这一点


-丹尼尔(daniel)

PHP给了你关于它的自由。您不必使用“某些路由概念”(如在Rails中),您可以使用“任何路由概念”。您甚至不必使用“控制器”或MVC模型

只需获取传入参数(使用$_请求),并自行决定“路由”


或者-使用任何现有的框架-大多数框架都定义了一些“路由”模板/引擎。

首先,Rails是一个Ruby框架,PHP是一种语言。要在PHP中获得相同的功能,必须使用框架,就像使用Ruby一样

或者你可以用手来做:

在不使用任何框架的情况下执行此操作的旧方法是使用Apache重写规则:

RewriteEngine On
RewriteRule /(\d+) userreq.php?id=$1
另一种方法是在PHP中手动完成,仍然需要Apache的帮助

在Apache config/.htaccess中:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
在index.php中:

$path = $_SERVER['REQUEST_URI'];

if (preg_match('#/(\d+)#', $path, $match)) {
    // execute userreq controller
} else if (preg_match(...)) {
...

这将因框架而异。PHP本身没有路由的概念——你要么使用框架(哪一个?),要么构建自己的路由ILS是一个用于web应用程序的Ruby框架。在PHP中,您可能还希望使用某种框架,解决方案取决于您选择的框架。谢谢。这就是我需要的答案。我应该说想要转换的全部原因是因为我根本不想使用框架。。。旧学校,破碎和不安全,但它是。。。