これは、シングルトンを作成するには、間違った方法だろうが、あなたはこれを行うことができます:
class C {
private static $instance;
public static function getInstance(){
return self::$instance;
}
public function __construct() {
self::$instance = $this;
}
}
$c = new c;
print_r(C::getInstance()); // should be $c
を私はあなたが何をしようとしてわからないんだけど、これは道にありませんそれをやる。
更新:
Aはるかに優れたアプローチは、次の操作を実行するために、次のようになります。http://php.net/manual/en/language:
class C
{
private static $instance;
public static function getInstance()
{
if (!is_null(self::$instance)) return self::$instance;
self::$instance = new self;
return self::$instance;
}
private function __construct()
{
// Whatever
}
}
$c = new C; // This will not work since __construct() is private
$c1 = C::getInstance();
$c2 = C::getInstance();
echo ($c1 == $c2 ? 'yes' : 'no'); // yes
ここでSingletonパターンをチェックしてください。 oop5.patterns.php – summea
2番目の例は非常に愚かです。最初の例は役に立ちません。代わりにどの問題を解決したいかを明確に記述する必要があります。 – hakre
あなたはCのインスタンスを増やすことができますが、どちらをお望みですか? – jgivoni