PHP 类的静态成员属性与静态方法 static 关键字

PHP 类中定义静态的成员属性和方法使用 static 关键字。

静态 static

声明类成员或方法为 static ,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外)。静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。

例子:

<?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:: $country
slef:: myCountry()

在子类访问父类静态成员属性或方法,使用 parent::(注意不是 $parent),如:

parent:: $country
parent:: myCountry()

外部访问静态成员属性和方法为 类名/子类名:: ,如:

Person::$country
Person::myCountry()
Student::$country

但静态方法也可以通过普通对象的方式访问。

本章节内容共分 17 部分:

  1. 1. PHP 类与对象
  2. 2. PHP 类的继承 extends 关键字
  3. 3. PHP 构造方法 __construct()
  4. 4. PHP 析构方法 __destruct()
  5. 5. PHP final 关键字
  6. 6. PHP 类的接口 interface 与 implements 关键字
  7. 7. PHP 类的访问控制与封装 public,protected,private 修饰符
  8. 8. PHP 自动加载类 __autoload() 方法
  9. 9. 范围解析操作符(::)
  10. 10. PHP 类的静态成员属性与静态方法 static 关键字
  11. 11. PHP 常量(const)
  12. 12. PHP 特殊方法 __set()、__get()、__isset() 与 __unset()
  13. 13. PHP 重载
  14. 14. PHP 重载方法 __call()
  15. 15. PHP 抽象方法与抽象类 abstract 关键字
  16. 16. PHP 对象克隆 clone 关键字与 __clone() 方法
  17. 17. PHP 对象的存储与传输(序列化 serialize 对象)

评论于2016-12-18日起不再显示。

5idev.com(我爱开发网) — 提供最好的 XHTML教程DIV+CSS教程JavaScript教程PHP教程ThinkPHP教程