例如,这是我的班级:
<?php
Class Example
{
public function example_function()
{
echo "example code";
}
}
?>
以下哪一项最佳,性能明智?
1)
Example::example_function();
2)
$example = new Example();
$example->example_function();
他们之间有什么区别?
答案 0 :(得分:7)
这不是性能问题。它真的不是。差异,如果有的话,是微不足道的,几乎无法衡量。
如果您需要使用静态方法设计类,请使用静态方法 如果你需要实例化你的类,你别无选择,只能使用对象方法。
这是与设计无关的课程设计决策。
答案 1 :(得分:3)
如果您计划访问类元素,则需要通过类的实例访问该函数。例如,当通过静态方法调用(Example::example()
)访问时,这是不合法的:
class Example
{
private $str = 'example';
public function example()
{
echo $this->str;
}
}
所以,问题不是关于性能,而是关于你将如何使用你的课程和/或功能。
您应该真正阅读PHP OOP个文档。
答案 2 :(得分:3)
就执行速度而言,两者之间的差异可能微不足道。但他们做了两件完全不同的事情。
Example::example_function();
将类视为全局单例对象。只有一个Example对象,它可能有一些公共方法可以在包含类的任何地方调用。
$example = new Example();
$example->example_function();
正在创建Example类的一个实例,这意味着可以有许多示例运行不同的属性。
如何使用这两者完全取决于项目的性质以及您想要实现的目标。
答案 3 :(得分:0)
正如其他一些评论所暗示的那样,关于绩效的问题似乎是次要的。还有其他决策和策略可以改善您的表现,但这似乎更像是纯粹的设计。
我认为这是一个好设计与糟糕设计策略的问题?我解释自己。
如果你不需要OO,那么你为什么要使用OO?我的意思是创建对象然后访问它们似乎很愚蠢,好像它是标准的程序功能
我只是在调查这个问题,所以请随意与我的意见进行辩论,我很高兴得到关于此的反馈(正面或负面): - )。