結論
コンストラクタでreturn;
した場合に返されるのは自インスタンス
前提
恐らくこの書き方はレアケースであまり遭遇しないと思います。
背景
あるコードをみていた時以下のような書かれていました。
class Hoge
{
public function __construct()
(
// 略
if (何らかの条件) {
return;
}
// 略
}
}
また利用箇所では以下のような記述がありました。
$hoge = new Hoge();
if (empty($hoge)) {
// 略
}
PHPではreturn
のを省略することができ、省略した場合はnullを返します。
注意:
return を省略した場合は null を返します。
恐らくコードの意図としては、return時のnull
を利用する処理だったと思うのですが、null
が返ることは無かったです。
実際に確認してみた
<?php
class Hoge
{
public function __construct()
{
return;
}
}
$hoge = new Hoge();
var_dump($hoge);
var_dump($hoge instanceof Hoge);
出力
object(Hoge)#1 (0) {
}
bool(true)
まとめ
- コンストラクタで
return;
したらインスタンスが返る - コンストラクタで
return;
してもnull
は返らない - 多分こんな書き方あまりしない
- もっとphpの深いところを知りたいと思いました
- 間違えコメントありましたら教えてください