Static properties and methods (including static and non-static) have only one location in memory (instead of static properties, there are as many properties as there are instantiated objects).
(Recommended tutorial: php graphic tutorial)
Example:
header("content-type:text/html;charset=utf-8"); class Human{ static public $name = "小妹"; public $height = 180; static public function tell(){ echo self::$name;//静态方法调用静态属性,使用self关键词 //echo $this->height;//错。静态方法不能调用非静态属性 //因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象 } public function say(){ echo self::$name . "我说话了"; //普通方法调用静态属性,同样使用self关键词 echo $this->height; } } $p1 = new Human(); $p1->say(); $p1->tell();//对象可以访问静态方法 echo $p1::$name;//对象访问静态属性。不能这么访问$p1->name //因为静态属性的内存位置不在对象里 Human::say();//错。say()方法有$this时出错;没有$this时能出结果 //但php5.4以上会提示 ?>
(Recommended video tutorial: php video tutorial )
Summary:
(1) Static properties can be called without instantiation. Because the static attributes are stored in the class, the calling method is "class name::property name";
(2) Static methods can be called without instantiation. Same as above
(3) Static methods cannot call non-static properties. Because non-static properties need to be instantiated and stored in the object;
(4) Static methods can call non-static methods using the self keyword. In PHP, after a method is called self::, it is automatically converted into a static method;
The above is the detailed content of How to call static attributes and static methods in php. For more information, please follow other related articles on the PHP Chinese website!