将安全参数传递给函数还是让函数检查? 请考虑下面的代码 <?php $a = ''; echo empty($a) ? '' : substr($a, 0, 1); // Prints: '' echo substr($a, 0, 1); // Prints: '' 第一个更好

将安全参数传递给函数还是让函数检查? 请考虑下面的代码 <?php $a = ''; echo empty($a) ? '' : substr($a, 0, 1); // Prints: '' echo substr($a, 0, 1); // Prints: '' 第一个更好,php,function,error-handling,argument-passing,Php,Function,Error Handling,Argument Passing,您始终需要防止出现错误/警告/通知 尽管为了可读性,我甚至不会使用单行程序。输入字符串必须是一个字符或更长。所以最好在检查之前检查一下。 请检查:最重要的部分是输入和输出变量之间的差异: $input['a'] = ''; $output['a'] = empty($input['a']) ? '' : substr($input['a'], 0, 1); echo $output['a']; 如何编写验证是您的业务,它应处理所有边缘情况,并且不应触发任何错误/警告 编辑:如果您想减少函数

您始终需要防止出现错误/警告/通知


尽管为了可读性,我甚至不会使用单行程序。

输入字符串必须是一个字符或更长。所以最好在检查之前检查一下。
请检查:

最重要的部分是输入和输出变量之间的差异:

$input['a'] = '';

$output['a'] = empty($input['a']) ? '' : substr($input['a'], 0, 1);

echo $output['a'];
如何编写验证是您的业务,它应处理所有边缘情况,并且不应触发任何错误/警告

编辑:如果您想减少函数调用的数量,以下代码段不使用任何函数,只使用一种语言构造:

$a = empty($a[0])?'':$a[0];
echo $a;

你真的应该考虑把注意力转移到首先防止错误和下一个性能。+ 1对PeeHaA的评论,性能是相对的,但是安全性不是。安全性包括代码将安全执行(脚本运行时的安全性,无论传递给它的输入值如何)。否则,性能就没用了,因为它根本不会运行。谢谢你们。我真的理解你的话,但我的目的是内部和外部检查,而不是留下警报。你可能会认为一个不发出任何警报的函数代替了substr。。。