程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php new self()和new static(),phpnewselfstatic

php new self()和new static(),phpnewselfstatic

編輯:關於PHP編程

php new self()和new static(),phpnewselfstatic


class A {
  public static function get_self() {
    return new self();
  }
 
  public static function get_static() {
    return new static();
  }
}
 
class B extends A {}
 
echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_static()); // A

self 指的是解析上下文,而不是調用上下文。例子裡,self被解析為定義get_self()的A,而不是解析為調用self的B。

php5.3中引入了延遲靜態綁定的概念,該特性最明顯的標志就是新關鍵字static。static指的是被調用的類。例子裡B::get_static()將生產新的B,而不是實例化一個A

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved