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();
-
你静态函数不能知道这是什么,因为它是静态的。 如果可能有$这个,它将属于$ student1而不是Student。
-
它也不知道什么是$ student1。
-
它对case 3起作用,因为它是一个属于类的静态variables,与前面的2不同,属于必须实例化的对象。