PHP デザインパターン シングルトンを実装
デザインパターンにシングルトンパターンというものがあります。
シングルトンパターンのは、そのクラスのインスタンスが1つしか生成されないことを保証することができるデザインパターンです。
なのでどこで呼び出しても同じインスタンスが返ってくるという利点があります。
うまく活用すれば新たなインスタンスが生成されないのでリソースの消費が抑えられたり、値のやり取りが簡単になります。
サンプルコード
<?php class Singleton{ /** 自己クラスのインスタンスを保持 */ private static $instance = null; /** **/ private $msg = "default"; /** * privateにして他クラスからのインスタンスの生成を出来ないようにする。 */ private function __construct() { } /** * このクラスのインスタンスを生成し返す。 * * @return Singleton */ public static function get() { if (is_null(self::$instance)) { self::$instance = new self; } return self::$instance; } /** * 文言を設定して出力。 * 設定されなかった場合は以前のを使用。 * @param string $msg */ public function message($msg = null) { if(!is_null($msg)){ $this->msg = $msg; } echo $this->msg.PHP_EOL; } } $one = Singleton::get(); // クラスを取得 $one->message(); // メッセージを出力 $one->message("ONE"); // メッセージを設定して出力 $two = Singleton::get(); // クラスを取得 $two->message(); // メッセージを出力
下記は実行結果
default ONE ONE47行目で出力実行を行うと「ONE」と表示される、これはシングルトン機能によって43行目で設定された値を引き継いでいるためです。
共通的な値や機能をシングルトンの状態にしておくと使いやすくなります。
«前の記事:他サイトのアクセス数がわかるWebサービス「SimilarWeb」自作ツール「住所や地名から緯度・経度を一括で取得するツール」:次の記事»