[英]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.