您会推荐哪个?
function currentScriptFilename()
{
if(!isset($_SERVER['SCRIPT_FILENAME']))
{
//This?
return E_USER_ERROR;
}
else
{
$url = $_SERVER['SCRIPT_FILENAME'];
$exploded = explode('/', $url);
return end($exploded);
}
}
function currentScriptFilename()
{
if(!isset($_SERVER['SCRIPT_FILENAME']))
{
//Or this?
trigger_error('$_SERVER[\'SCRIPT_FILENAME\'] is not set.', E_USER_ERROR);
}
else
{
$url = $_SERVER['SCRIPT_FILENAME'];
$exploded = explode('/', $url);
return end($exploded);
}
}
我不确定是否会后悔在我的函数中放置一堆错误消息,因为我想将其用于其他项目。
或者,您会推荐完全不同的东西吗?
最佳答案
不要混在一起。
错误通知和错误处理是不同的任务。
您必须同时使用两种方法。
如果您认为$ _SERVER ['SCRIPT_FILENAME']的可用性值得一则错误消息,则可以使用触发器错误。但是,如果您不进行检查,PHP本身将发出通知。
如果要处理此错误,只需检查此函数的返回值即可。
但是我不会为此任务创建特殊功能。
所以,
if (!$filename = basename($_SERVER['SCRIPT_FILENAME']) {
// do whatever you want to handle this error.
}
够了
异常对于处理错误,了解我们是否发生任何错误可能很有用。
一个简单的例子:
try {
$filename = basename($_SERVER['SCRIPT_FILENAME'])
if (!$filename) throw new Exception("no filename");
$data = get_some_data_from_db() or throw new Exception("no data");
$template = new Template();
//Exception could be thrown inside of Template class as well.
}
catch (Exception $e) {
//if we had any errors
show_error_page();
}
$template->show();
关于php - 从函数返回PHP错误常量(例如E_USER_ERROR),还是使用trigger_error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978802/