多くのクラス メソッドで使用されるプライベート プロパティを含むクラスがあります。
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.適切にインスタンス化されていない場合、コンストラクターから例外をスローしますが、そうしませんこれはまったく望ましいことだと思います。