我有一个这样的课。
<?php
namespace test;
class Test
{
public static function static1(){}
public static function static1(){}
...
}
自动加载使用psr-4。 什么时候内存中的静态函数加载?
在我的选项中:静态函数在没有new
的情况下很容易使用(当然,它们没有私有数据),但我担心它会增加内存并降低性能。
答案 0 :(得分:2)
免责声明:您所说/所说的内容对我来说并没有多大意义。您需要研究和更正您的术语,并了解有关静态方法或属性的更多信息。我相信当你提到私人数据时,你实际上指的是“实例属性”。
静态方法不会使用比实例方法更多的内存,也不确定在哪里提出这个想法。当包含时,编译器会将类的代码加载到内存中。除了它们的定义(编译代码),方法或函数不使用内存。运行方法时消耗的内存量完全取决于方法的作用。
方法没有私有属性,类具有私有属性,静态方法可以访问私有属性。
如果您的目标是在多个实例中保留属性,则可以从实例方法中访问静态属性:
public function getData() {
// self::$data or static::$data represents a static property $data
return self::$data;
}
如果您的目标是任何时候只存在一个类的实例,则可以查找Singleton模式。
如果有的话,静态方法和属性可以比实例对应物更有效。静态方法的一个问题是它们不太可测试,你可以自己研究为什么你可能想要避免静态方法,但性能不太可能是其中一个原因。