LoginSignup
0
0

More than 1 year has passed since last update.

PHPのコンストラクタでreurnを省略すると何が返るのか

Posted at

結論

コンストラクタで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の深いところを知りたいと思いました
  • 間違えコメントありましたら教えてください
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0