trait 是 php5.4中的新特性,是 php 多重繼承的一種解決方案。例如,需要同時繼承兩個 abstract class, 這將會是件很麻煩的事情,trait 就是為了解決這個問題。
簡單使用
首先,當然是宣告個 trait,php5.
4增加了 trait 關鍵字
trait first_trait
function second_method()
}同時,如果要在 class 中使用該 trait,那麼使用 use 關鍵字
class
first_class
$obj = new
first_class();
//executing the method from trait
$obj->first_method(); //
valid
$obj->second_method(); //
valid
使用多個 trait
在同個 class 中可以使用多個 trait
trait first_trait
}trait second_trait
}class
first_class
$obj= new
first_class();
//valid
$obj->first_method(); //
print : method1
//valid
$obj->second_method(); //
print : method2
trait 之間的巢狀
同時,trait 之間也可以相互的巢狀,例如
trait first_trait
}trait second_trait
}class
first_class
$obj= new
first_class();
//valid
$obj->first_method(); //
print : method1
//valid
$obj->second_method(); //
print : method2
trait 的抽象方法(abstract method)
我們可以在 trait 中宣告需要實現的抽象方法,這樣能使使用它的 class 必須實現它
trait first_trait
//這裡可以加入修飾符,說明呼叫類必須實現它
abstract
public
function second_method();
}class
first_method
}trait 衝突
多個 trait 之間同時使用難免會衝突,這需要我們去解決。php5.
4 從語法方面帶入了相關 的關鍵字語法:insteadof 以及 as
,用法參見
trait first_trait
}trait second_trait
}class
first_class
} $obj = new
first_class();
//output: from first trait
$obj->first_function();
需要注意的幾點
trait 會覆蓋呼叫類繼承的父類方法
trait 無法如 class 一樣使用
new例項化
單個 trait 可由多個 trait 組成
在單個 class 中,可以使用多個 trait
trait 支援修飾詞(modifiers),例如 final、
static、abstract
我們能使用 insteadof 以及
as操作符解決 trait 之間的衝突
-- split --一些看法
坦白講,我第一眼看到 trait 對它並沒有任何好感。php5 以來帶來的新特性已經足夠得 多,而且讓開發者們有點應接不暇。
同時,trait 更像是程式設計師的「語法糖」,然而它提供便利的同時可能會造成巨大的隱患。 例如 trait 能夠呼叫類中的成員:
trait hello
abstract
public
function getworld();
}class
myhelloworld
public
function setworld($val)
}同時,針對類中已經實現的方法,trait 沒有效果
trait helloworld
}class
theworldisnotenough
}$o = new
theworldisnotenough();
$o->sayhello(); //
echos hello universe!
試玩 PHP 5 4 的新特性
1.例項化時訪問類成員 class human public function hello old style human new human gonzalo echo human hello new cool style echo new human gonzalo hello 2.短陣列定義語法...
細說PHP 5 4 變數的型別
變數型別是指儲存在該變數中的資料型別。計算機操作的物件是資料在計算程式語言世界裡,每乙個資料也都有它的型別,具有相同型別的資料才能彼此操作。例如書櫃是裝書用的 大衣櫃是放衣服用的 保險櫃是存放貴重物品的 檔案櫃式存放檔案用的.php中提供了乙個不斷擴充的資料型別集,可以將不同資料儲存在不同的資料型別...
php 5 4以上安裝php fpm方法
php 5.4以上安裝php fpm方法 如果你已經安裝過php 也是一樣 那就重新編譯php 覆蓋1 先去php官網下個 php 5.6.29.tar.gz wget 2 configure prefix usr local php with iconv usr local libiconv en...