基本上我在一个页面上有一堆链接,我会使用这样的东西
<?PHP echo $SITE_PATH ?>
在同一页面上多次出现,但这样做会在 PHP 中显示一个通知。
我知道你应该使用像isset()这样的东西,但我真的需要每次打电话时都使用它吗?
<?PHP echo $SITE_PATH ?>
--- 编辑:
如果我切换到使用定义的变量,那么通知似乎消失了
这里有两种解决方案:
isset
) 。没有魔法^^
如果您的应用程序使用了许多未设置的变量,则您的设计中可能存在一些问题。
在您介绍的情况下,对于多次使用的变量,我会确保它存在,如果不存在,则将其设置为 '',例如,在我的脚本开头。
这看起来不太好,但它会起作用——而且,这样,您不必遍历整个应用程序,修补所有内容。
(或者我也可能禁用E_NOTICE
error_reporting
关卡——我不喜欢这个想法,但有时,它确实是处理某些代码库的唯一方法)
您可以使用 @ 来隐藏消息:
print @$site_path;
或者您可以使用三元运算来获取默认值:
print (isset($site_path)) ? $site_path : "default_path" ;
最后,您不应该使用未设置的变量。如果你是,你需要重新考虑你的方法。预先处理此信息,以便您的其余脚本可以运行而不会出现此类问题。
你真的应该确保在使用它之前设置一个变量(尤其是在页面上回显它)。如果变量来自不安全的来源($_GET、$_POST、数据库),那么您应该进行某种类型的过滤以防止安全漏洞(跨站点脚本(XSS)、跨站点请求伪造(CSRF)等。 .) 但是如果你觉得一切都很安全并且你只是不想显示错误(例如在生产中),请将你的错误报告设置为 0。
例如error_reporting(0);
您可以在 php.ini 级别或按页面执行此操作(设置error_reporting(0);
在页面顶部)。
附带说明一下,在生产过程中,您永远不想显示错误。而是记录它们。在开发中,您希望查看所有错误 (E_STRICT)。
您可以创建一个函数来检查变量是否已设置并返回它:
function EchoVar() {
global $SITE_PATH;
return isset($SITE_PATH) ? $SITE_PATH : '';
}
// calling it
echo EchoVar();