我正在用 PHP 学习 OOP。而且我对使用静态方法和属性感到困惑。
在此示例中,我将在服务器端使用一个小缓存示例。但我不确定使用静态方法和属性
那么,如何创建和使用静态方法/属性:
class Villa extends CI_Model
{
protected static $cacheOwner = null;
public static function owner()
{
if ( ! is_null(static::$cacheOwner) ) {
return static::$cacheOwner;
}
}
}
用它作为
Villa::owner();
我认为它会起作用,但使用“静态”更好?或者我必须仅在从父类继承属性或方法时使用“静态”?
不,这根本不对,因为静态考虑harmful
和anti-pattern
. 在封装状态并提供转换此状态的方法的术语object oriented programming
中,但是当您使用属性和方法时,它违反了原则,因为它(静态)在所有实例化对象上保留相同的状态,因此它是 a ,而不是。在类中只是蓝图/数据类型,而对象是可以发挥作用的东西。由于硬依赖和难以扩展,静态方法/类也不利于单元测试。在某些情况下,例如单例设计模式,静态类方法/属性可能很有用,但它(单例)本身被认为是一种糟糕的设计模式,并且不符合. 检查固体Objects
static
class oriented programming
OOP
OOP
OOP
以及(另请参阅)部分中提供的其他链接。
所以,尽量避免static
,最后,除了你自己,没有人能告诉你你在课堂上真正需要什么,因为你知道你要做什么,你的课程与你的应用程序有什么关系,以及你是否需要保持相同的状态一个属性/数据一直到您的应用程序的生命周期,那么您可以使用它但不确定。另外,检查这个搜索结果并阅读一些好的答案,你会从这里学到很多东西,至少我做了很多,我发现这篇文章有一些例子,也可能会有所帮助。