【发布时间】:2015-05-22 17:51:52
【问题描述】:
我有点困惑,因为我在 PHP 中的 OOP 方面没有太多经验。我总是听说使用实例方法比使用静态方法更好,这是为什么呢?
我需要一个带有解释的深刻答案。
例如为什么下面的这个应该用实例方法来完成?
控制器:
public function getProperty($id){
$property = Property::getProperty($id);
return $property;
}
型号:
public static function getProperty($id){
//$query = DB::table('properties')...
//Some Code;
return $query;
}
我正在阅读有关 setter/getter、实例与静态等方面的内容。但我需要一个完整的答案来了解事物的如何和为什么。
【问题讨论】:
-
对于
static方法,您必须传递所有它需要操作的信息。如果它必须操纵它,这包括类的“实例”。这只是一个正常的“传递一切的过程调用”。即“标准”过程调用。但是所有过程都集中在“类”名称中,因此当您在代码中使用它们时,“自我记录”它们“生活”在哪里。请记住:它们只是普通的函数调用。 -
对于
instance方法调用,那么它是否完全不同...instance是一个独立的实体,它拥有自己的数据并可以访问“类”的“静态”方法。当调用instance方法时,它会将instance作为非静态“类”方法的第一个参数传递。真的就是这么简单。 -
@RyanVincent 实际上,使用实例您必须传递操作所需的所有对象。使用静态方法,您可以通过单例轻松访问主对象