繁体   English   中英

PHP 严格标准:这不好吗?

[英]PHP strict standards: is this bad?

当我创建一个标准 class 我主要做:

$test = null;
$test->id = 1;
$test->name = 'name';

但是在严格模式下我得到一个错误。

所以显然正确的做法是:

$test = new stdClass();
$test->id = 1;
$test->name = 'name';

所以我想知道:

这是一个很大的禁忌: $test = null; 做我想做的事?

遵守严格的标准,我们能得到什么? 它是否确保代码将在未来的版本中继续工作? 向后兼容会更好吗? 这只是最佳实践的问题吗? 还有什么?

编辑错字

这是一个很大的禁忌:$test = null; 做我想做的事?

是的。

这是允许的,因为 PHP 是松散的,但打开严格模式会给你诚实的真理。

遵守严格的标准,我们能得到什么? 它是否确保代码将在未来的版本中继续工作? 向后兼容会更好吗? 这只是最佳实践的问题吗?

是的。

还有什么?

没错

null不是 object。 你基本上会做:

$test = 'this is not an object';
$test->suddenly_it_is_an_object = true;

...您想知道为什么会收到警告吗?

使用这个:

$test = null;

您没有明确说明(对于 PHP 引擎和将阅读您的代码的人) $test是 object。


所以,作为一个读者,后来发现$test被用作 object 感觉并不自然——这意味着你的代码比你明确声明$test为 object 时的代码更难维护。

这样做和阅读它是非常糟糕的= null; go 带标准new...;

如果您养成使用$test = new stdClass(); 那么看到这个严格模式错误将帮助您捕获 PHP 在您不小心为$user键入$usr等时喜欢向您抛出的隐式变量声明错误,从而为您节省不必要的麻烦。

您可以像这样将一些东西投射到 object 中:

$object = (object) array(
    'id' => 5,
    'name' => 'Darsstar',
    'key' => 'value',
);

但是 new StdClass() 仍然是最严格的方法。 虽然我有这种感觉,但您只希望错误消失,并且可能更喜欢这种语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM