<?php Class Person{ public static $country = "中国";// 定义静态成员属性 public $countries = "zhongguo"; //非静态类成员 public $mingzi = array();//非静态类成员 // 定义静态成员方法 public static function myCountry() { // 内部访问静态成员属性 echo "我是".self::$country."人<br />"; } } class Student extends Person { function study() { echo "我是". parent::$country."人<br />"; } } echo Person::$country."<br />"; // 输出:中国 $p1 = new Person(); // 实例化类 echo $p1->countries. "<br>"; //调用输出静态成员变量 $p1->mingzi = array("liming"); //调用静态成员数组 echo $p1->mingzi[0]; //输出静态成员数组中的元素 Person::myCountry(); // 输出:我是中国人 $p1->myCountry(); //调用静态成员方法 echo Student::$country."<br />"; // 调用子类 输出:中国 $t1 = new Student(); // 实例化子类 $t1->study(); // 调用子类中的方法输出:我是中国人 ?>
<html> <head> <meta Content-Type="content-type:text/plain" charset="utf-8"> </head> </html>
输出结果:
中国
zhongguo
liming我是中国人
我是中国人
中国
我是中国人
public的变量可以如果没有static是可以实例化调用的调用,如果有static,就不能实例化调用。如:
正确的写法:
<?php class myclass{ public static $name="amos"; } class myclass1{ public $mingzi="amos"; } echo myclass::$name; $p2=new myclass1(); echo $p2->mingzi; ?>
<html> <head> <meta Content-Type="content-type:text/plain" charset="utf-8"> </head> </html>
错误的写法:
<?php class myclass{ public static $name="amos"; } class myclass1{ public $mingzi="amos"; } $p1=new myclass(); echo $p1->name; echo myclass1::$mingzi; ?>
<html> <head> <meta Content-Type="content-type:text/plain" charset="utf-8"> </head> </html>
为什么要声明static类型的成员和方法?
声明类成员或方法为static,就可以不实例化类而直接访问。
如何实例化?
$var= new classname();