$instance;ちなみに、これだけではインスタンスの単一性を保証する事ができません。PHPに限りませんが、インスタンスを複製する方法などあまたあるわけで、とはいえ非常識的な部分は置いておくとして、マジックメソッドに関する生成複製部分は回避しておく必要があります。アクセス修飾子をprivateにするのでも良いですが、ここでは例外を投げています。(どっちでも良いです)つまりは、clone演算子でインスタンスをクローンさせないグローバル関数のunserialize()でインスタンスをアンシリアライズさせないという事を行っています。$this->id;}このクラスの唯一の機能である、IDを返すメソッドです。ちなみに返却するIDですが、インスタンスを1つだけ生成する際にコンストラクタでIDの生成を行っています。time());ではクライアント側からこのクラスを利用します。$singleton2->getId();結果は以下になります。5a7f72e01c129081cc23ca2196a76e19de7051341c3b0ffc7d3baba759b155955a7f72e01c129081cc23ca2196a76e19de7051341c3b0ffc7d3baba759b15595同じIDが返されている事が確認できます。インスタンスを生成する毎にIDが生成されるので、この2つが同じIDということは、同一のインスタンスである事が確認できます。newもcloneもできません。×まとめSingletonパターンはインスタンスが1つしかない事を保証するものですが、それによってインスタンスの生成を制御し、アプリケーションをシンプルに、そして堅牢に保つ為の手法です。LaravelなどのPHPフレームワークを使っているなら、コンテナとかキューの処理なんかをイメージするとより理解しやすいかもしれません。キューイングは処理の順番を把握し処理したいのでインスタンスは1つが良い。いった意味では、DIコンテナなんかは、事実上シングルトンを提供しているようなものです。反面、何も考えずに用いるとアンチパターンになってしまう事も多々あり、シンプルな構造とは言えその本質を良く理解してからの使用検討が良い手法の1つとも言えます。言わず、先人の知恵の一つとして、そして己の手数の一つとして理解しておくと良いと思います。イベントレポート2019.12.8MySQL8.0.16で追加されたCHECK制約を試してみる。2019.12.2LaravelのContracts(契約)とは。SESを使ってAPIメール送信を行う(Mailableクラス&SimpleEmailService)2019.12.3MySQL8.0.16で追加されたCHECK制約を試してみる。RitoLaboこのサイトについて利用規約プライバシーポリシ。