我需要有从数据库中获取内容的方法,但我不理解PHP中静态函数和普通函数之间的区别.
示例代码
class Item {
public static function getDetail($arg) {
$detail = $this->findProductId($arg);
return $detail;
}
private function findProductId($id) {
//find product_id in database where id = $arg
//return detail of product
}
}
Run Code Online (Sandbox Code Playgroud)
和课外的功能
function getDetail($arg) {
$detail = findProductId($arg);
return $detail;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用$item = Item::getDetail(15);和$item = getDetail(15);- 他们是一样的.
joh*_*nny 11
1)静态功能和正常功能有什么区别
虽然它们是函数,但我更喜欢将它们称为给定类的方法.一个是静态方法,另一个是实例方法.
静态方法: $item = Item::getDetail(15);
实例方法: $item = getDetail(15);
(但是,请参阅上面评论中的FuzzyTree的正确语法.)
2)如何使用静态函数和正常函数(如果你简单的例子是好的)
静态意味着您不必实例化(声明对象引用).也就是说,您可以简单地使用该方法.因此,在您的示例中,虽然答案可能相同,但您调用该方法/函数的方式也不同,如上所述.
例如,在Java中,您拥有Math类.它不需要实例化使用,事实上你不能我所知道的,因为它的构造函数是私有的.您可以通过引用要使用的类和方法名称来简单地使用方法,
Math.pow(d1, d2); //no instantiation needed
Run Code Online (Sandbox Code Playgroud)
在PHP中这可能是,
MyClass::pow(d1,d2); //no instantiation needed
Run Code Online (Sandbox Code Playgroud)
3)询问静态功能和正常功能之间的性能.哪个更好?
更好的是你的设计问题.如果你每次想要使用一个数字的力量来创建一个对象,那么就会产生更多的内存,而不是直接使用该类.我没有基准证明,但它似乎合乎逻辑,因为你没有在内存中以相同的方式处理方法.除非你做了很多复杂的动作,否则我认为它在现实世界中并不重要.
也许你会感兴趣.