一个小例子。此处 Data 类用作数据存储,其中 $pwd 因更改而关闭:
class Data
{
private $pwd = 'qwerty';
public function getPwd() {
return $this->pwd;
}
}
class DoIt
{
private $pwd = '';
public function __construct(Data $config) {
$this->pwd = $config->getPwd();
}
public function myPwd() {
echo $this->pwd;
}
}
$var = new DoIt($config = new Data());
$var->myPwd();
您可以将其重写为静态属性,但为了从更改中关闭它(变量),您将不得不做几乎相同的事情:您还需要一个额外的方法来检索它。问题:我们什么时候需要一个对象,什么时候需要静态属性和方法?
要了解是否值得创建静态属性,您必须首先问自己:我是否需要类的实例才能执行某些操作。例如 - 你有一个类
ZooAnimal,它有一个numberOfAnimalInZoo返回动物园中动物数量的方法。当然,你可以创建一个动物对象并通过它找出这个数字,或者你可以将方法设为静态,你就不必胡说八道了。另外,静态属性还有另一个有趣的特性——它们指的是内存中的一个区域。也就是说,您创建了两个对象ZooAnimal,但是如果您更改其中一个中的静态字段,它将在基于此类创建的第二个对象中更改。作为使用静态的一个例子,单例模式:现在我们可以使用 Settings::getInstance 创建一个实例。我希望我能够足够详细地描述为什么要使用静力学以及何时应用)