我知道有很多问题与此有关.但是,我没有设法找到简单问题的答案(我不是要求从构造函数返回值,我认为我理解构造函数应该返回).
有没有理由避免在__construct中使用return?
或者这是完全可以接受的编码风格,由于返回,将来不会破坏:
class A {
protected $tristate = null;
function __construct() {
// Constructor returns instance of class automatically
// no need to `return $this`
}
protected function Logic() {
return rand(0, 1) === 1;
}
}
class B extends A {
function __construct() {
parent::__construct();
if ($this->Logic()) return;
$this->tristate = true;
}
}
上面的一个是经过测试的,它按预期工作(在我的开发环境中),它将父$tristate var 50/50设置为NULL / TRUE,但是它将来会工作,并且当在构造函数的中间返回时会出现任何问题无效回归.
我想到的另一件事是我应该使用return $this而不是普通返回的普通返回但是PHP似乎无论如何返回实例,回答可能是返回$this和普通返回同样好.
解决方法:
Constructor
void __construct ([ mixed $args [, $… ]] )
void as a return type means that the return value is useless.
所以你可以归还任何东西……但它没用.在您的情况下,返回适用于退出函数执行:它只是允许.
另一个问题是,这是一个好的或坏的做法……
我觉得简单回归;保存一些IF语句和恼人的缩进是一个很好的做法.
带有值的返回(即返回false;),如果它没用,则是一种不好的做法,因为没有意义.
标签:php,oop,constructor
来源: https://codeday.me/bug/20190901/1785084.html