在php编程中,声明类成员或方法为 static ,可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外)。
静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。
以下通过实例来认识下php静态成员属性与静态方法的用法,如何定义静态成员属性,如何定义静态成员方法,以及内部访问静态成员属性,一起来了解下吧。
例子:
<?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),如:
在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:
外部访问静态成员属性和方法为 类名/子类名:: ,如:
但静态方法也可以通过普通对象的方式访问。