PHP メソッドチェーン シングルトン

PHP7 yum インストール 高速 実行速度 2倍

残念ながら私は毎日業務でプログラムを書いているわけではないので、色々やっているうちに忘れてしまう危険があります・・・!!そんなわけで、プログラム系もぼちぼち記事にしていこうと思います。

 

今回はPHPのメソッドチェーンを記事にします。

チェーンで書くとコード量はシンプルになりますが、読むのが複雑になるので自分で書く必要はあまりないかも。複雑に書くと数か月後の自分が読めるかわからない自信があります。

しかし、他の人が書いたコードやフレームワークでは使われるので小難しい書き方も覚えておく必要があります。

 

難しい漢字みたいなもの

書ける必要はないけれど、本によくある漢字は知らないと読むのが辛くなるのに似ています。感じましょう。

 

メソッドチェーン

  1. Aクラス、Bクラスのインスタンスを生成。
  2. Bクラスのadd()メソッドにAインスタンスを投入して、get()メソッドでリターンします。
  3. Bインスタンスー>Bget()メソッド->A()メソッドの記述で利用します。

やっていることは継承に似ています。

↓メソッドチェーン化

すっごーい。どんどん長くなる、へびのフレンズなんだね。

 

get()で取得したインスタンスを変数に入れてバウンドさせる必要がなくなります。変数にインスタンスを代入する記述を省略しているんだな~っと覚えればOK

 

 

シングルトンパターン

getInstance()関数を作って呼び出すことで、Japariparkインスタンスを生成します。1つだけインスタンスを生成するのが特徴。private static $instance;がインスタンス生成を1つに制限して保証する部分。

  • $instanceにJapariparkインスタンスを格納する
  • $instanceはstaticで指定しているので値が初期化されなくなる。

これで何をするかというと、getInstance()で作ったJapariparkインスタンスのadd()なメソッドに他のインスタンスを入れて、関数を呼び出したり。上記2つとも、インスタンスのメソッドの引数に別クラスのインスタンスを代入して、returnで返しているからチェーンとして利用できるという仕組みですね!

 

書いてみた

コードにするネタが思い浮かばなかったので、けもフレで。

Japaripark::getInstance()メソッドを起点としてはじまります。

JapariparkインスタンスはJaparipark::getInstance()メソッドから1つだけ生成されます。

 

出力してみる

メソッドチェーン シングルトン PHP

インフラとしてプロジェクトに関わる場合もコードが読めないと、障害が起きた時に根本原因がサーバ側なのか、プログラム側なのか切り分けが難しいです。とりあえずの復旧として一時対応的にはサービスを再起動させれば大丈夫なことが多いですが・・・、根本原因を改善しないといつかは同じことが起こります。

また、世界的にメジャーなCMSやパッケージではなく、オリジナルのシステムだと、障害原因の8割以上はアプリ側の要因で起こっている気がする。プログラムが原因の場合、コードが読めればプログラマさんと一緒になって2馬力?で対応に当たれます。

もっと仕事の幅が広がるフレンズになれるかな~。

 

PHPプログラム関連

優 (エンジニア)

この記事を書いた人:優 (エンジニア)

システムガーディアン爆弾処理班
アクセス負荷対策などNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。


この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166