全部,PHP - 为什么“Index.php?action =”未被识别为“Index.php?”
我正在用PHP构建一个前端控制器。在这里面,我说:
if (isset($_GET['action'])){
$action=$_GET['action'];
} else {
$action='';
}
我遵循与switch语句比控制器是基于$action
值称为共治:
switch ($action){
case '':
require_once('Controller_Welcome.php');
$command=new controller_Welcome();
break;
case 'logon':
require_once('Controller_Logon.php');
$command=new controller_Logon();
break;
default:
require_once('Controller_Unknown.php');
$command=new controller_Unknown();
break;
}
$command->execute();
这工作得很好。当我启动应用程序时,URL是http://.../Index.php?
,并调用Controller_Welcome.php
。如果我点击登录菜单项,我会得到http://.../Index.php?action=logon
,并调用Controller_Logon.php
。如果我手动编辑URL以将...?action=...
设置为某个未知值,我会得到Controller_Unknown.php
,这是我的错误页面。所以一切都很好。
我不明白的是,如果我手动更改网址以显示http://.../Index.php?action=
,我会得到错误页面而不是欢迎页面。为什么php不会将以...?action=
结尾的网址与开关盒$action='';
关联?
(还有时会发生没有逻辑上的用户情况,但是我还是不明白......)
感谢,
JDelage
PS:Var_dumping $action
回报string(0) ""
。
的var_dump($行动);回报什么? – 2011-08-28 04:05:45
尝试var_dumping你的变量,也许这不是你想象的那样。 –
它返回:'string(0)“”' – JDelage