挂钩PHP运行时

时间:2011-06-22 18:19:24

标签: php model-view-controller configuration

有没有办法在php.info(或其他配置文件)中指示每次调用PHP时都要运行的脚本?

我感兴趣的是将特定页面的HTTP请求映射到表示该页面的Controller类,类似于许多MVC框架(如CI)的工作方式。

例如,用户单击应该映射到/webroot/some/url/widget.php的链接,而是/webroot/app/mvc/controllers/WidgetController.php类是调用的。

要做到这一点,我认为像CI这样的MVC框架已经找到了一种方法来通过运行运行的脚本“挂钩”PHP运行时并说“哦,请求是针对widget.php,但我们想要实际运行WidgetController.php对象。“

任何想法/想法/建议/顾虑?

谢谢!

5 个答案:

答案 0 :(得分:1)

我认为你可能在这里走错路。 Zend Framework和其他框架我知道使用mod_rewrite或类似技术重定向请求,然后由某种Front Controller处理。

这意味着您对example.org/mypage的请求被Apache(而不是PHP)重定向到myfrontcontroller.php,然后myfrontcontroller.php决定如何处理传入的请求。

答案 1 :(得分:1)

您正在寻找的是 php.ini 选项auto_prepend_file

答案 2 :(得分:0)

你需要一个路由器,以及apache mod_rewrite或同等产品。您设置mod_rewrite将所有请求发送到单个文件,例如/index.php。然后路由器查看请求URL并确定要加载哪个控制器文件以及调用哪个方法。几乎任何MVC框架都内置了这个功能,它们的工作方式基本相同。

答案 3 :(得分:0)

webroot中的index.php应该足够,路径将作为服务器变量PATH_INFO传递。

答案 4 :(得分:0)

请参阅http://us3.php.net/manual/en/ini.core.php#ini.auto-prepend-file

编辑:我的回答仅仅是一个FYI。正如其他人所提到的,mod_rewrite是解决问题的可接受方式。