我有一个包含私有属性的类,该属性在许多类方法中使用:
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 实例化模型。该模型被设置为一个属性,然后在所有其他类方法中使用。
这样做的问题是模型实例化可能会出错并且模型没有正确实例化,因此使用它的每个方法都存在潜在问题。
有没有更好的方法来处理这段代码?我看到的另外两个选项是: 1. 强制客户端传递创建的模型而不是 id 2. 在每个使用模型的方法中检查 null 3. 如果没有正确实例化,则从构造函数中抛出异常,但我没有认为这是完全可取的。