2

定義された変数をオーバーライド (値の変更) から保護することは可能ですか? プラグインを使用するシステムを作成していますが、プラグイン作成者 (自分自身) が特定の定義済み変数 (新しいクラス インスタンスを保持するオブジェクト) を変更できないようにしたいと考えています。

このようなもの:

Class Foo { 
  function __construct() {
    return "Hello";
  }
}
$bar= new Foo();

後で、global $bar;関数で使用しますが、その変数を次のように変更したくありません。

$bar = new Foo(); $bar = "New value";

$barこれは大きなシステムになり、定義した何百ものコア変数を思い出すことができないためです。

理想的には、再定義しようとすると、phpは致命的なエラーをスローするはずです。そのようなことはありますか?

4

2 に答える 2

3

これはシングルトンパターンのように聞こえます:

class Foo
{
    protected static $instance = null;
    protected function __construct()
    {
        throw new Exception('use ::getInstance()');
    } 

    public static function getInstance()
    {
        if (!isset(static::$instance)) {
            static::$instance = new static;
        }
        return static::$instance;
    }
}

使用する:

$bar = Foo::getInstance();

誰でも $bar を再宣言できます .. しかし、実際の Foo を取得できない場合は、インスタンスを取得する必要があります。

于 2013-07-18T12:42:20.653 に答える