<?php Class Person{ // 定义静态成员属性 public static $country = "中国"; // 定义静态成员方法 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->country; // 错误写法 // 访问静态成员方法 Person::myCountry(); // 输出:我是中国人 // 静态方法也可通过对象访问: $p1->myCountry(); // 子类中输出成员属性值 echo Student::$country."<br />"; // 输出:中国 $t1 = new Student(); $t1->study(); // 输出:我是中国人 ?>
小结:在类内部访问静态成员属性或者方法,使用 self::(注意不是 $slef),代码如下:
slef:: $countryslef:: myCountry()
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),代码如下:
parent:: $countryparent:: myCountry()
外部访问静态成员属性和方法为 类名/子类名::,代码如下:
Person::$countryPerson::myCountry()
Student::$country
但静态方法也可以通过普通对象的方式访问.
例子,声明静态变量,代码如下:
<?PHP function foo(){ static $int = 0;// correct static $int = 1+2; // wrong (as it is an expression) static $int = sqrt(121); // wrong (as it is an expression too) $int++; echo $int; } ?>
<?PHP function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?>
静态变量也提供了一种处理递归函数的方法,递归函数是一种调用自己的函数,写递归函数时要小心,因为可能会无穷递归下去,必须确保有充分的方法来中止递归,一下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止.
例子,静态变量与递归函数,代码如下:
<?PHP function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?>
希望本文所述对大家的php程序设计有所帮助。