0

多くのクラス メソッドで使用されるプライベート プロパティを含むクラスがあります。

class MyClass
{
    private $_myProperty;

    public function __construct($myPropertyId)
    {
         $this->_initMyPropertyModel($myPropertyId);
    }

    public function initMyPropertyModel()
    {
        $this->_myProperty = new MyProperty($this->_myPropertyId);
    }

    public function methodA()
    {
        // do stuff with $this->_myProperty;
    }

    public function methodA()
    {
        // do stuff with $this->_myProperty;
    }

    public function methodC()
    {
        // do stuff with $this->_myProperty;
    }
}

コンストラクターはモデルの ID を受け取り、その ID からモデルをインスタンス化しようとします。モデルはプロパティとして設定され、他のすべてのクラス メソッドで使用されます。

これに関する問題は、モデルのインスタンス化がうまくいかず、モデルが適切にインスタンス化されない可能性があるため、それを使用する各メソッドに潜在的な問題があることです。

このコードを処理するより良い方法はありますか? 私が見る他の2つのオプションは次のとおりです。1.クライアントにIDの代わりに作成されたモデルを渡すように強制します2.モデルを使用する各メソッドでnullをチェックします3.適切にインスタンス化されていない場合、コンストラクターから例外をスローしますが、そうしませんこれはまったく望ましいことだと思います。

4

1 に答える 1