PHP:静态和非静态函数和对象

这些对象调用有什么区别?

非静态:

$var = new Object; $var->function(); 

静态的:

 $var = User::function(); 

而且还在一个class里面,为什么我应该使用静态属性的function?

例:

 static public function doSomething(){ ...code... } 

根据定义,静态函数不能也不依赖于类的任何实例属性。 也就是说,它们不需要类的实例来执行(因此可以按照您的示例执行,而无需先创build实例)。 从某种意义上说,这意味着函数不会(也不会需要)依赖于类的成员或方法(公有或私有)。

静态方法和成员属于类本身,而不属于类的实例。

静态函数或字段不依赖于初始化; 因此,静态。

区别在于variables的范围。 想象一下你有:

 class Student{ public $age; static $generation = 2006; public function readPublic(){ return $this->age; } public static function readStatic(){ return $this->age; // case 1 return $student1->age; // case 2 return self::$generation; // case 3 } } $student1 = new Student(); Student::readStatic(); 
  1. 你静态函数不能知道这是什么,因为它是静态的。 如果可能有$这个,它将属于$ student1而不是Student。

  2. 它也不知道什么是$ student1。

  3. 它对case 3起作用,因为它是一个属于类的静态variables,与前面的2不同,属于必须实例化的对象。