ani*_*son 20 php suppress-warnings notice
我已经压制了很长一段时间的通知而没有任何问题,但我开始怀疑我是否正在做正确的事情.我似乎无法找到任何合理的理由,为什么我不应该只是压制它们,但其他人似乎认为使用error_reporting来抑制它们是一件可怕的事情,但为什么呢?
我能找到的最接近答案的是这个问题,但这仍然远远不是我正在寻找的答案.隐藏PHP生成的所有通知是否存在某种无法预料的缺点?例如,要将POST调用中的变量包含回表单中,因为存在错误,我只需使用:
<?= $_POST['variable'] ?>
Run Code Online (Sandbox Code Playgroud)
这将生成PHP通知.要解决这个问题,我可以使用这样的东西:
<?= isset($_POST['variable']) ? $_POST['variable'] : '' ?>
Run Code Online (Sandbox Code Playgroud)
但是,这真的有必要吗?我的代码实际上是否会从中获益,而不仅仅是回显变量是否存在并可能创建PHP通知?在我看来,能够忽略通知是使用PHP的好处,因为您不必担心变量是否被定义,特别是对于这样的例子,它似乎并不重要.
我还利用PHP的能力根据它的使用方式自动更改变量的类型/转换,你经常会找到如下代码片段:
for ($i = 0; $i < $limit; $i++) $results[] = $i; // Example
Run Code Online (Sandbox Code Playgroud)
这里$results以前没有定义的,而是变成一个数组,当我尝试一个新的项目添加到它作为一个阵列.我更喜欢这样做,因为如果没有结果添加到数组并且我需要存储该信息或者出于任何原因将其转换为JSON,那么将不会定义该特定变量,从而节省额外的带宽,即使它是分钟.
$data = stdClass; // For reference, in my case this would be defined before this code
$data->results = array();
$limit = 0;
for ($i = 0; $i < $limit; $i++) $data->results[] = $i;
print json_encode($data);
// {"results":[]}
Run Code Online (Sandbox Code Playgroud)
与
$data = stdClass; // For reference
$limit = 0;
for ($i = 0; $i < $limit; $i++) $data->results[] = $i;
print json_encode($data);
// []
Run Code Online (Sandbox Code Playgroud)
问题再一次:如果有什么真正的好处,我可以通过修正通知错误而不仅仅是压制它们来获得收益?怎么会/会伤害我的代码?
Jim*_*Lin 24
在我看来,你永远不应该压制错误,任何类型的错误,通知与否.它现在可能会为您提供一些便利,但是在您维护它时,您将面临许多代码问题.
假设你有一个你想要回显的变量,就像上面的第一个例子一样.是的,使用isset有点复杂,但也许你的应用程序应该处理特殊的空案例,从而改善体验.例:
if (isset($var)) {
echo $var;
} else {
echo "Nothing is found. Try again later.";
}
Run Code Online (Sandbox Code Playgroud)
如果你只有echo $var;,如果这是一个用户正在阅读的公众视图,他们只会看到任何东西,这可能会导致混淆.当然,这只是一个特殊情况,修复PHP Notices可以改善您的应用程序.
当您在PHP代码中处理通知时,不应将其视为麻烦或不便,因为代码应该是干净的.当我在源代码中打开它时,我宁愿拥有一个没有通知的代码而不是看到干净的代码.当然,两者肯定更好!:)
同样,错误(即使它们不是致命的)也会导致问题.如果你已经做过echo $var;没有检查的事情,那就是存在变量的假设,即使你知道它可能不存在,它只会给你一个假设存在和工作的习惯.这可能现在很小,但过了一段时间,你会发现你会给自己造成很多很多问题.
通知是有原因的.如果我们都error_reporting(E_ALL ^ E_NOTICE)在代码中做了,那么我们对代码不负责任.如果你能够解决它,那你为什么懒惰而不这样做呢?当然,发布1.0的通知,稍后修复它们,这就是我们所说的.但最好这样做是一种习惯,代码第一次完美.如果您花15分钟编写受通知困扰的代码,然后花费2个小时在以后的开发时间修复它们,为什么不花一个半小时来完善代码,因为您在第一时间编写代码?
编写好的代码应该是一种习惯,而不是一种不便.错误消息是有原因的.尊重他们,修复他们,你去,你是一个负责任的程序员.
您还为未来的代码维护者铺平了道路.
| 归档时间: |
|
| 查看次数: |
8019 次 |
| 最近记录: |