インスタンスの生成失敗を判定
インスタンス生成時に任意条件で生成失敗とさせたい場合、constructは戻り値を返せないのでreturn nullなどと記述してもインスタンスが返ってしまいます。
そこで以下の実装で判定できるようにしてみました。
失敗フラグをプロパティに追加する方法で対処。
class Hoge { private static $instance; private function __construct() { if (失敗) { $this->fail = true; // return null; は不可。無視される // throw new Exception ("失敗") など場合によっては例外を発生させてもいいかも } } public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new Hoge(); } return !property_exists(self::$instance, 'fail') ? self::$instance : null; } }
これで以下のような判定が可能になります
if (Hoge::getInstance()) { // 成功 } else { // 失敗 }