PHP手冊 對於單繼承語言的擴充套件Trait

2021-06-08 06:16:05 字數 654 閱讀 7857

翻閱php手冊時候無意間發現了這個東西php5.4新增的trait關鍵字,很有意思的東西,類似於把函式和成員方法include進乙個類,有些地方寫公共的方法之模擬繼承靈活很多,定義方法類似class

trait hello 

public function sayhello()

}trait world

}class myhelloworld

//如果沒有則執行 trait hello裡的同名方法

public function sayhello()

use hello, world;//同事引入多個triat

public function sayexclamationmark()

}$o = new myhelloworld();

$o->sayhello();

$o->sayworld();

$o->sayexclamationmark();

echo $o->id;

列印結果

constructmyhelloworld

helloworld!2

經過測試,use進來的triat裡的

1.方法會被所在類裡的同名方法覆蓋

2.成員變數如triat和類裡有重名則會報錯

對於單例的理解

在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙個靜態例項,並初始化,然後設定成nil,2 實現乙個例項構造方法檢查上面宣告的靜態例項是否為nil,如果是則新建並返回乙個本類的例項,3 重寫allocwithzone方法,用來保證其他人直接使用alloc和in...

對於單鏈表複製錯誤的反思

原來錯誤的 view plaincopy to clipboardprint?sllnode sllcopy sllnode const ptarget 拷貝單鏈表,若拷貝失敗或引數為空鍊錶,返回null,否則返回新鍊錶的首指標 函式並不破壞原鍊錶 return pcopy 由於才起步,經驗不足,導...

對於單鏈表複製錯誤的反思

原來錯誤的 view plaincopy to clipboardprint?sllnode sllcopy sllnode const ptarget 拷貝單鏈表,若拷貝失敗或引數為空鍊錶,返回null,否則返回新鍊錶的首指標 函式並不破壞原鍊錶 return pcopy 由於才起步,經驗不足,導...