PHP-想自己写个php框架,外部GET传的值如何传递到框架类里面呢?

发布于 2016-10-18 14:43:44 字数 354 浏览 1331 评论 3

想自己写个简单的php框架自己用,现在有一点问题,就是url为?m=aaa&f=bbb(m为控制器文件名,f为model里面的方法名),url后面还要跟一些不定多少的参数啥的。

问题:这些get值是如何传递到框架的类里面的??我不大明白。

class不能直接用get的值,我现在在首页载入并实例化control的时候就吧get值做参数传递给control的方法里面,但这么写我觉得不好。

1是从没见过其他框架有这种写法,不知道他们是如何实现传递get值的。
2是get的值不定多少,有时候就俩,m和f,有时候还有些参数就多了,不可能把所有get值都在首页写定义一下啊。

怎么办???比较标准正统的做法是怎样的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想挽留 2017-05-10 03:39:33

一般MVC框架的做法就是加入一个路由层(Router)

Router的作用是根据Uri中的各种参数,定位到对应的Controller/Action,同时过滤未定义的参数,将过滤后的参数传入Controller。

具体实现找个主流的php框架看看源码就知道了

虐人心 2016-12-03 07:59:05

给个简单分解类和方法逻辑:

<?php
public function Action()
{
$m = $_REQUEST['m'];
$f = $_REQUEST['f'];
if (empty($_REQUEST['m']))
{
$m = 'index';
}
if (empty($_REQUEST['f']))
{
$f = 'main';
}
$filePath = DIR_CONTROLLERS . $m .'.class.php';//DIR_CONTROLLERS是control文件路径
require_once($filePath);
$newobj = new $m();
@$newobj->$f();
}

?>
在你框架入口index.php里执行Action();

甜柠檬 2016-10-29 16:59:32

给你举一个小例子:
URL: http://www.test.com/index.php?c=job&a=list&page=2
c表示执行job控制器
a表示执行job控制器中的list动作
page表示访问第2页

从程序入口文件index.php进入,调用框架启动文件,执行路由类(就是通过$_GET['c']、$_GET['a'],来调用那个控制器,执行那个动作),执行控制器,处理接收的其他参数(如$_GET['page'])

$_GET这个是超全局数组,程序中哪里都可以用的

至于有时候传递的的$_GET['c']或$_GET['a']这个不存在,可以判断c对于的控制器类(文件)是否存在,或$_GET['a']对动作是否存在,如使用method_exists()、class_exists()...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文