PHP 5 4中的traits特性

2022-09-16 14:00:10 字數 2480 閱讀 4176

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...