Zend: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))

我有一个error.php文件,可以大致简化为:

<?

  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();
  }
}