当我试图运行我的网站时,我对静态和非静态函数以及类属性感到困惑。
有人可以解释使用静态函数而不是使用非静态方法编写整个网站是否更好? 我在google上找不到这么多。
答案 0 :(得分:1)
这实际上取决于您的应用程序的设计方式。如果函数可以并且将被调用而不实例化该类,则将其声明为静态。否则,不要。在几乎所有情况下,你都会使用两者的组合,因为只使用静态函数是没有意义的(你也可以编写程序代码)。
答案 1 :(得分:1)
如果您的方法需要访问“this->”中的数据,那么您必须使其成为非静态方法。然后需要实例化对象(通过“new”)。
如果您的所有方法都使用的是函数参数中包含的数据,那么请考虑使您的方法保持静态。或者仅使用静态方法创建一个单独的类。
答案 2 :(得分:0)
编写OO代码并仅使用静态变量和方法没有意义。它与编写程序代码相同。你不能从OOP只使用静态代码的所有功能中受益。
我并不是说你不能使用静态方法或属性,但是大量使用它们是OO设计不良的一个指标。
答案 3 :(得分:0)
有一种思想流派,根据这种流派,静力学是有害的,应该避免,因为它们会产生过于僵化的阶级之间的束缚。例如。如果你有A和B类调用彼此的方法,然后从它们中继承AA和BB,并期望AA调用BB的代码,如果他们只知道彼此作为实例,它将很好地工作,但它会失败对于仍然指向A / B的静态调用。
无论如何,PHP的静态实现非常糟糕。在5.3之前没有后期静态绑定(意味着对象不能调用自己的静态方法,使得静态函数在OOP架构中几乎无用),静态函数不能在严格模式下非静态调用,调用函数的方式错误将导致非常奇怪的错误,类与他们的父母共享他们的静态变量......当不确定时,你应该使用非静态恕我直言。