如何设置 PHP 控制器


How to setup PHP Controller

我支持已经部署的php应用程序,但它的工作方式对我来说是新的,我不知道它是如何做到的。

基本上,使用类似路径的语法来调用 php 方法来检索数据,例如:

<?php
// .....
$json = Request("http://_server/myfolder/abc/default/mymethod?data=something");
// Now $json var has some information.
?>

奇怪的是方法是如何构建的。直到文件夹"myfolder"物理路径存在于linux"server"中,你知道".../apache/htdocs/myfolder/",但这就是IT。此外,代码的物理位置位于不同的文件夹结构中,其中 default/mymethod 根本不匹配 NO 文件夹。

通过深入挖掘,我发现mymethod对应于位于以下位置的PHP方法:

apache/htdocs/myfolder/protected/modules/abc/controllers/defaultcontroller.php

在默认控制器中.php有这样的东西:

<?php
// ....
Class DefaultController {
    // ....
    Public Function actionmymethod { // Notice the name of mymethod has 'action'
        // more code
        return $response;
    }
}
?>

我 100% 确定在运行请求调用时会触发该方法,但我的我不知道它是如何完成的。

我的问题是:

如何完成此设置?一定有你联系的地方:

"http://_server/myfolder/abc/default/mymethod" with "actionmethod"

但是在哪里以及如何?

我需要制作一个正在运行的副本,所以我可以用这样的东西来调用我的副本:

"http://_server/FOLDERCOPY/myfolder/abc/default/mymethod" 

我已经复制了新结构,但是在调用它时,服务器找不到新的方法/路径:(

编辑***我在位于/myfolder/的 htaccess 中找到了这个

RewriteEngine on
RewriteBase /myfolder/ 
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.php
RewriteRule . index.php

我修改了/FOLDERCOPY/myfolder 中的副本,但它似乎无法正常工作:(

RewriteEngine on
RewriteBase /FOLDERCOPY/myfolder/ 
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
# otherwise forward it to index.php
RewriteRule . index.php

谢谢

并非每个 url 都 1:1 映射到服务器的文件系统。

显然,.../apache/htdocs/myfolder/里面应该有一个php脚本,很可能是一个index.php。还应该有一些重写规则,可能在.htaccess文件中,将http://_server/myfolder下的 url 转换为该脚本,将其余部分转换为参数(query_stringpath_info)。

从这一点开始,php接管了。该结构意味着 MVC 框架的存在。这个框架似乎支持模块,其中一个是abc,其default控制器的mymethod方法被调用来处理请求。所以网址结构是这样的:

http://server/site/module/controller/method?params

.../apache/htdocs/myfolder/config.php?)下查找配置文件。它将包含有关模块位置和到控制器的映射(路由)的规则。再说一次,可能有一个全局站点配置,以及每个模块一个......