1. 程式人生 > >php 多重繼承的替代方案trait

php 多重繼承的替代方案trait

要求php5.4 或者更高版本

trait tDebug {                                                                                                                                         
  public function dumpObject() {                                                                                                                       
  echo json_encode(get_class_vars(get_class($this))).PHP_EOL;                                                                                                                                                                                
  echo json_encode(get_object_vars($this)).PHP_EOL;                                                                                                    
}                                                                                                                                                      
};                                                                                                                                                     
                                                                                                                                                       
class A {                                                                                                                                              
                                                                                                                                                       
 use tDebug;                                                                                                                                           
 public static $_a = 1;                                                                                                                                
 private $_b = 2;                                                                                                                                      
};                                                                                                                                                     
$a = new A();                                                                                                                                          
$a->dumpObject();                                                                                                                                      

輸出:

{"_b":2,"_a":1}
{"_b":2}

trait tDebug {                                                                                                                                         
  public function dumpObject() {                                                                                                                       
  echo json_encode(get_class_vars(get_class($this))).PHP_EOL;                                                                                          
  echo json_encode(get_object_vars($this)).PHP_EOL;                                                                                                    
}                                                                                                                                                      
};                                                                                                                                                     
                                                                                                                                                       
class A {                                                                                                                                              
                                                                                                                                                       
 use tDebug;                                                                                                                                           
 public static $_a = 1;                                                                                                                                
 public $_b = 2;                                                                                                                                       
};                                                                                                                                                     
$a = new A();                                                                                                                                          
$a->dumpObject();                                                                                                                                      
$a->_b = 4;                                                                                                                                            
A::$_a = 10;                                                                                                                                                                                                                                 
                                                                                                                                                       
var_dump($a);                                                                                                                                          
$a->dumpObject();

輸出:

{"_b":2,"_a":1}
{"_b":2}
object(A)#1 (1) {
  ["_b"]=>
  int(4)
}
{"_b":2,"_a":10}
{"_b":4}

以上說明 get_object_vars 返回物件最新屬性值(不包括類靜態屬性)

get_class_vars 返回類的靜態屬性和物件 屬性(其中靜態屬性是最新的。。物件屬性始終是第一次初始預設值)

相關推薦

php 多重繼承替代方案trait

要求php5.4 或者更高版本 trait tDebug {                                                                                                          

006_005 Python 繼承替代方案,自動託管

程式碼如下: #encoding=utf-8 print '中國' #繼承的替代方案,自動託管 功能:比如可以隱藏基類的某些方法 try: set except NameError: from sets import Set as set class ROError(Attri

php繼承和弊端 && 順位的trait

轉載文章  http://blog.csdn.net/batoom/article/details/6052565trait       http://php.net/manual/zh/language.oop5.traits.php總結:        php  多繼承的

php利用介面實現類的多重繼承

//定義介面A interface A{         function getName();    } //定義介面B     interface B{         function getAddress();    }     class AA implement

Python 多重繼承

python 多重繼承 #!/usr/bin/env python# -*- coding:utf-8 -*-# author: Changhua Gongclass person(object): def __init__(self, name): self.name = nam

2013級C++第12周(春)項目——成員的訪問屬性、多重繼承

更新 日期 報告 時間 上下 cin out 讀取 edate 課程首頁在:http://blog.csdn.net/sxhelijian/article/details/11890759,內有完整教學方案及資源鏈接第一部分 程序閱讀 1、閱讀程序。分析類中成員的訪問屬性

多重繼承關系初始化順序及初始化

java 所有 clas 屬性 配對 -- 如果 實現 硬盤 順序:父類屬性--> 父類構造方法--> 子類屬性--> 子類構造方法 初始化: 1.在創建類之前,檢查是否已加載檢查硬盤上的.class是否加載到內存中,如果沒有加載就先加載父類的文件,再加載

PHP繼承實現--Traits

use echo 實例 ren 代碼復用 manual 方式 兩個 text ---恢復內容開始--- PHP 5.4.0 開始,PHP 實現了代碼復用的一個方法,稱為 traits。 Traits 是PHP中一種類似多繼承的方法。Trait 為了減少單繼承語言的限制,使開

多重繼承方法或屬性調用順序(MRO)

span cep 其它 1.5 style images 學習 top highlight 參考摘選自這篇文章http://hanjianwei.com/2013/07/25/python-mro/ python2.3以後采用c3方法來確定方法解析順序 我們把類 C 的

你未曾見過的移動端下拉列表替代方案

ddb chm csdn 打開 人員 開關 golden 詳細 href 以下內容由Mockplus團隊翻譯整理,僅供學習交流,Mockplus是更快更簡單的原型設計工具。 在表單中使用下拉列表似乎不是什麽很費勁的事情,它們在用戶界面上占用的空間不大,可自動驗證輸入,支持所

多重繼承

div 子類 print pre host .py nbsp 多個 父類 多重繼承即一個子類可以繼承多個父類 #!/usr/bin/python class A(object): def aaa(self): print "aaa"

C++多重繼承關系舉例

多重繼承//多重繼承 #include <iostream> using namespace std; class A { public: int a; A(int a=0):a(a) { cout<<"A基類A::A()"<<en

linux rz sz替代方案

shel 方案 lin 協議 ssh 用戶名 文件路徑 get file SFTP是基於SSH的文件傳輸協議,與ZMODEM相比具有更加安全且更為快速的文件傳輸功能。 如何利用SFTP接收文件: 1. 在本地提示以sftp命令登陸擬要接收文件的主機。Xshell:\>

C++入門經典-例8.6-多重繼承的構造順序

close splay alt com img pub 被調用 namespace lap 1:單一繼承是先調用基類的構造函數,然後調用派生類的構造函數,但多重繼承將如何調用構造函數呢?多重繼承中的基類構造函數被調用的順序以派生表中聲明的順序為準。派生表就是多重繼承定義中繼

PHPWAMP亂碼一鍵解決,PHP亂碼通用解決方案/網站亂碼的多種原因分析

php亂碼 亂碼解決方案 php亂碼原因分析 所有引起網頁亂碼的原因,我將其劃分以下五大類1、服務器強制編碼造成的亂碼(此亂碼的表現:通常只會引起某個PHP版本亂碼(因為默認配置不同),建議使用PHPWAMP內置的常用工具萬能亂碼修復器,該修復器可以一鍵解決多種亂碼情況)2、頁面編碼聲明和頁面文檔

【python】繼承多重繼承

python1)繼承基類 class BaseClass: def __init__(self,name,age): self.name = name self.age = age print "baseclass is inited"

PHP中的替代語法(冒號、endif、endwhile、endfor)

source tag 括號 fun html 例子 用處 top boa PHP中的替代語法(冒號、endif、endwhile、endfor) 轉載 2012年10月07日 09:48:10 標簽: php / wordpress / html 16096

LT4020替代方案

item ket .com ive taobao gpo com oba tail 國產 替代LT4020的方案 南芯 展訊的方案 https://item.taobao.com/item.htm?spm=a230r.1.14.21.6f27bf96rrAtci&

Golang之繼承多重繼承(struct)

running 結構體 ring style gpo nbsp 結構 繼承 port 熱乎的代碼來了 package main import "fmt" /* 繼承 一個結構體嵌到另一個結構體,稱作組合 匿名和組合的區別 如果一個struct嵌套了

Python多重繼承引發的問題——牛逼的super

ont 這就是 ans lin 技術 wid 然而 多重繼承 obj 少說廢話多做事先上一個圖,此圖用win7下的畫圖工具所畫,當然,這不是重點 需要清楚的一個事情是: 任何類,都默認並隱式的繼承object類(根類),在上面的圖中,Transf