php -- new self() 和 new static
看一段摘自網上的代碼
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
通俗點講就是:
new self(); 在哪個類裏面執行的該代碼,返回的就是哪個類的對象。如果該代碼只寫在父類中,即使子類繼承自父類,返回的依然是父類的對象。
new static(); 哪個類調用的它,返回的就是哪個類的的對象。
php -- new self() 和 new static
相關推薦
php -- new self() 和 new static
如果 color fun span pre clas stat 類繼承 extends 看一段摘自網上的代碼 class A { public static function get_self() { return new self(); } pu
PHP new self()和new static()的區別
phpnew static()是php5.3以後引入新的特性,延遲靜態綁定.訪問的是當前實例化的那個類,那麽 static 代表的就是那個類。new self() 是指的不是調用上下文,它指的是解析上下文.class Test { public static funtion getSelf(){
PHP中new self()和new static()的區別--延遲靜態載入
1.new static()是在PHP5.3版本中引入的新特性。 2.無論是new static()還是new self(),都是new了一個新的物件。 3.這兩個方法new出來的物件有什麼區別呢,說白了就是new出來的到底是同一個類例項還是不同的類例項呢? 為了探究上面的問題,我們
PHP的self::與static::,new self()和new static()之分
//後期靜態繫結 class A { public static function who() { var_dump("I'm A"); } public static function test() { self::who();
【PHP趣味】new self和new static的區別
<?php class Test { private $_user; protected function __construct($user) { $this->_user = $user; } public
new self() 和 new static() 的區別
1、new static()是在php5.3版本引入的新特性 2、無論是 new static 還是 new self() 都是 new 一個物件 3、這兩個方法new 出來的物件 有什麼區別呢?說白了就是new出來的到底是同一個類的實列還是不同類的實列 為了探究上面的問
new self 與 new static 的區別
說明 大概的意思都是例項化當前類 但如果 是繼承關係就會有細微的差別 例子 class root { public function static getSelf() { return new self; } p
淺談 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也許經常使用 new 和 delete 來動態申請和釋放記憶體,但你可曾想過以下問題呢? new 和 delete 是函式嗎? new [] 和 delete [] 又是什麼?什麼時候用它們? 你知道 operator new 和 operator delete 嗎? 為什麼
c++學習之new int()和new int[]的區別
new int[] 是建立一個int型陣列,陣列大小是在[]中指定,例如: int * p = new int[3]; //申請一個動態整型陣列,陣列的長度為[]中的值 new int()是建立一個
關於C++中new/delete和new[]/delete[]
參看連結 淺談 C++ 中的 new/delete 和 new[]/delete[] operator new 和 operator delete 這兩個其實是 C++ 語言標準庫的庫函式,原型分別如下: void *operator new(size_t); //al
C++中的new/delete和new[]/delete[]
1、瞭解new-handler的行為 通俗來講就是new失敗的時候呼叫的回撥函式,直接看程式碼: #include<iostream> #include<string.h> #include <stdlib.h> using nam
new/delete 和 new[]/delete[] 配套使用
new 和 delete 到底是什麼? 如果找工作的同學看一些面試的書,我相信都會遇到這樣的題:sizeof 不是函式,然後舉出一堆的理由來證明 sizeof 不是函式。在這裡,和 sizeof 類似,new 和 delete 也不是函式,它們都是 C++ 定義的關鍵字
Java中"throw new Exception() "和"new Exception()"的區別
throw new Exception(String, Exception) throw new Exception(String) throw是明確地丟擲異常 ////throws的作用/////////////////////////////////// 宣告方法可能
new/delete 和new[]/delete[]的解讀(轉)
new 和 delete 到底是什麼? 如果找工作的同學看一些面試的書,我相信都會遇到這樣的題:sizeof 不是函式,然後舉出一堆的理由來證明 sizeof 不是函式。在這裡,和 sizeof 類似,new 和 delete 也不是函式,它們都是 C++ 定義
PHP中new static() 和 new self() 的區別
pub 堆內存 func sel urn ret 通過 ati php self 指的是self所在的類 new static 實例化的是當前使用的類,有點像$this ,從堆內存中提取出來。 還是通過實例說明一下: class A { public static f
new static 和 new self的區別
new static new self 都是例項化當前類, 但是new static只有程式碼所在的類,就是子類如果沒有重寫的話那麼例項化的就是父類。 而ne
PHP中new static()與new self()的區別異同分析
本文例項講述了PHP中new static()與new self()的區別異同,相信對於大家學習PHP程式設計能夠帶來一定的幫助。 問題的起因是本地搭建一個站。發現用PHP 5.2 搭建不起來,站PHP程式碼裡面有很多5.3以上的部分,要求更改在5.2下能執行。 改著改著發現了一個地方 return
對比 PHP 中 new static() 與 new self()
arr sta 創建 function turn dump self 區別 stat 通過new static()與new self()都能產生實例對象,new static()是在PHP5.3版本中引入的新特性,本文對二者稍作對比。 一、當直接通過本類創建實例時
【宇潤日常瘋測-005】PHP 中的 clone 和 new 效能比較
clone和new本不應該放在一起比較,它們的作用是不同的。但可能有一些場景下,可以用clone也可以用new,那麼這時候我們選哪個呢? 我編寫了兩個測試,第一個是宣告一個空類,第二個是帶構造方法、屬性的類。另外,我還加入了 PHP 序列化的測試。 國際慣例,直接上程式碼,一目瞭然。 程式碼 <?php
方法static和new的區別
(一)靜態變數:執行緒非安全 1、靜態變數:使用static關鍵字定義的變數。static可以修飾變數和方法,也有static靜態程式碼塊。被static修飾的成員變數和成員方法獨立於該類的任何物件。也就是說,它不依賴類特定的例項,被類的所有例項共享。只要這個類