我应该避免在 PHP 中使用太多静态方法吗?

sal*_*der 3 php static-methods

众所周知,可以在不实例化类的情况下调用静态方法。所以我想知道静态方法在我使用它们之前是否会加载到内存中。如果那样的话,在我看来,我应该使用更多的实例方法而不是太多的静态方法。有人建议吗?我不熟悉PHP的底层机制。

axi*_*iac 6

静态方法只是一个带有花哨名称的常规函数​​(如果不是,则限制访问public)。

静态方法不是面向对象编程,它们是变相的过程代码。

我应该避免在 PHP 中使用太多静态方法吗?

这取决于你认为“太多”了多少。对于纯 OOP 代码,一种静态方法已经“太多了”。但有时为某些功能编写静态方法是不可避免的(读作“更容易”)。

所以我想知道静态方法在我使用它们之前是否会加载到内存中。

无论您是使用 CLI 运行 PHP 脚本还是通过 Web 服务器调用它来提供网页,脚本的文本都会加载到内存中并进行编译。如果编译成功(即没有语法错误),解释器开始执行它。

脚本中定义的所有内容此时都已经在内存中,但只有主脚本中定义的项目。在编译阶段不处理包含语句(includeinclude_oncerequirerequire_once)。

被提及的文件include语句加载到内存中,编译和执行时,如果,该include脚本的执行过程中达成的语句。被包含文件的全部内容都被加载、解析并转换为操作码,无论它是否包含函数、类或全局代码。从这个角度来看,实例方法和静态方法之间没有区别。


小智 5

所以我想知道静态方法在使用之前是否会被加载到内存中。

当加载一个类时,它的所有方法都会被加载。无论这些方法是类方法还是实例方法,或者应用程序是否正在使用它们,都会发生这种情况。

使用最适合您的设计的任何类型的方法。