@
chenz 赞同+1
@
raincious 对于变量在使用前是否先isset,还是先初始化,
==============
我的做法:
$option = array(
//如果是用户的输入,先isset
'file_name' => isset($_POST['file_name']) ? $_POST['file_name'] : '',
//5.2.0以上可以用$fileName = filter_input(INPUT_GET, 'file_name');
);
dododo($options);
function dododo(array $options)
{
!isset($options['file_name']) and die('need a file..');
//如果不是用户的输入,就在使用新变量前先初始化好,如$file_content;
$file_content = '';
is_file($options['file_name']) and is_readable($options['file_name']) and $file_content = file_get_contents($options['file_name']);
return $file_content;
}
一般都是习惯于先初始化好,不可能存在不初始化的变量,也就不需要isset了
================================
对于这个,我觉得,在处理用户的输入时,默认值应该是为了照顾大众的习惯而设置的,不应该程序就帮用户输入了.用户的输入总是不可靠的,当然要isset了..直接$_REQUEST['visitor'] === 'yes' ,关闭了E_NOTICE, 会导致你看不到unserialize的出错时产生的E_NOTICE...
对于 error_reporting, 生产环境用0,然后写日志, 用户访问出错时显示空白或者错误提示"您访问的页面有点问题"之类的内容, 不会让错误乱飘的..开发环境用E_ALL(5.4以下用E_ALL | E_STRICT)..关于性能,@屏蔽影响往往不是重点...