今日、私はシングルトンを使用するために PHP を使用することを考えていました。そこで、シングルトン モードのいくつかの実装がまとめられた、比較的包括的な概要を目にしました:
PLAIN TEXTPHP:
class MyClass。
{
プライベート静的 $instance;
パブリック静的関数singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = 新しい $c;
}
self::$instance を返します。
}
このコードは通常 MyClass から継承されており、$c = __CLASS__; は常に基本クラスのクラス名を取得しますが、これは使用できないため、あまり使いやすいものではありません
。
他の実装方法を見つけることを検討するだけです。
関数
メソッドに実装されたシングルトンを調べ始めました。この実装は非常に優れていました。欠点は、クラスをパラメーターでインスタンス化できないことです。これが私のバージョンです
。
静的 $obj = 配列();
$args = func_get_args();
if(空($args))
null を返します。
$clazz = $args[0];
if(!is_object($obj[$clazz])) {
$cnt = カウント($args);
if($cnt> 1) {
for($i = 1, $s = ''; $i <$cnt; $i++)
$s[] = '$args[' . $i ';
eval('$obj[$clazz] = new $clazz(' . join(',', $s) . ');');
} それ以外 {
$obj[$clazz] = 新しい $clazz;
}
}
$obj[$clazz]を返します;
これ
は php5 で簡単に呼び出すことができます:
PLAIN TEXTPHP:
getObj('MyClass', $param1, $param2)->myMethod();
以前の単純なバージョン:
モナドモードの簡単な実装 (SINGLETON)