Zend:php页面中未定义的变量
我有一个error.php文件,可以大致简化为:Zend:php页面中未定义的变量,php,variables,undefined,Php,Variables,Undefined,我有一个error.php文件,可以大致简化为: <? if (!isset($error)) $error = "Unspecified Error"; echo "Error: $error"; ?> 也就是说,如果用户确实导航到error.php,那么他们只会得到预期的“error:Unspecified error” 我所有的代码都正常工作,错误页面显示出来并完全按照预期工作,但是Zend抱怨行中未定义$error:if(!isset($error))
<?
if (!isset($error))
$error = "Unspecified Error";
echo "Error: $error";
?>
也就是说,如果用户确实导航到error.php,那么他们只会得到预期的“error:Unspecified error”
我所有的代码都正常工作,错误页面显示出来并完全按照预期工作,但是Zend抱怨行中未定义$error:if(!isset($error))
我意识到我的设计模式很糟糕,但在这种情况下,我只是在快速而肮脏地拼凑一些东西。试试这个:
如果(!isset(@$error))
更好的办法是创建一个函数:
function output_error( $error = NULL )
{
if( !$error ) $error = "Unspecified Error";
echo "Error: $error";
}
它的好处是既可以消除Zend问题,又有更好的设计。然后:
if (!$dbh)
{
include('error.php');
output_error( "Can't connect to MySQL: " . mysql_error() );
exit();
}
它是未定义的,但这不就是
isset()
真正的用途吗?@alex嗯,是的。。。我想是的。我没有问,因为我的代码不起作用;我问是因为Zend给了我警告。目前我只是忽略它们,因为它们不是真正的问题。顺便说一句,即使我的实际error.php(不是我作为示例输入的简化版本)输出一个完整的html错误页面,其中包含head、样式表和javascript?+1。我认为这是目前为止唯一正确的答案。在页面底部的
中
if (!$dbh)
{
include('error.php');
output_error( "Can't connect to MySQL: " . mysql_error() );
exit();
}
$dbh = mysql_connect($host, $user, $pass);
if (!$dbh){
$error = "Can't connect to MySQL: " . mysql_error();
if(!include('error.php'){
echo $error;
exit();
}
}