1. 程式人生 > >PHP學習——25 PHP面向物件(類的靜態繫結與延遲繫結技術:self,parent,static詳解)

PHP學習——25 PHP面向物件(類的靜態繫結與延遲繫結技術:self,parent,static詳解)

<?php 
class Employee
{
	public static $name = '湯姆';
	public static $age = 22;
	public static $salary = 4000;
	public static function show() // 靜態方法
	{
		// self:: 與本類Programmer進行靜態繫結
		return '年齡:'.self::$age; // 訪問本類中的靜態屬性 self 就是當前類
	} 
	public static function getSex() // 靜態方法
	{
		// self:: 與本類Programmer進行靜態繫結
		return '年齡:'.static::$age.',性別:'.static::$sex; // 訪問本類中的靜態屬性 static 就是呼叫者所屬的類
	} 
	// static與self、parent是不一樣的,它對應的類是動態設定的,也叫做後期靜態繫結,用於在繼承範圍內引用靜態呼叫的類
	// self、parent與類的繫結是在編譯階段執行,static是在執行時繫結呼叫類
}
class Programmer extends Employee
{
	public static $sex = 'male';
	public static function display()
	{
		// parent:: 與父類Employee進行靜態繫結,self:: 與本類Programmer進行靜態繫結
		return '姓名:'.parent::$name.' 性別:'.self::$sex;
	}
}
echo '姓名是:'.Employee::$name;// 在外部訪問靜態屬性
// 姓名是:湯姆
echo '<hr>';
echo Employee::show(); // 在外部訪問靜態方法
// 年齡:22
echo '<hr>';
echo Programmer::display();
// 姓名:湯姆 性別:male
echo '<hr>';
echo Programmer::getSex();
// 年齡:22,性別:male,
?>