国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

玩轉PHP的Trait

hikui / 798人閱讀

摘要:語言的一個問題是單繼承,這意味著類只能繼承一個其他的類。然而,很多情況下需要多繼承,比如繼承多個類的方法,以防止代碼的重復。和組合的語義定義了一種減少復雜性的方式,避免傳統多繼承問題。是一組方法,可以包含在類中進行使用,單不可實例化。

PHP語言的一個問題是單繼承,這意味著類只能繼承一個其他的類。然而,很多情況下需要多繼承,比如繼承多個類的方法,以防止代碼的重復。對于但繼承模式好還是多繼承模式好,不在本文探討范圍內。

為了解決PHP語言單繼承存在的不足,在PHP 5.4 中添加了新特性 trait,Trait 是一種代碼復用機制,為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用 method。Trait 和 Class 組合的語義定義了一種減少復雜性的方式,避免傳統多繼承問題。

Trait是一組方法,可以包含在類中進行使用,單trait不可實例化。

trait Sharable {

public function share($item)
{
return "share this item";
}

}

你可以在其他類中包含這個trait

class Post {

use Sharable;

}

class Comment {

use Sharable;

}

如果你實例化上面的類,就可以調用trait中的方法

$post = new Post;
echo $post->share(""); // "share this item"

$comment = new Comment;
echo $comment->share(""); // "share this item"

解析上面例子是如何工作的:

例子中的Post 和 Comment 的實例都成功調用了方法share(),盡管類本身沒有share()方法,就是因為類中使用了trait Shareable.

trait的基本原理就是在運行時“復制和粘貼"了方法代碼,即將trait復制到Post和Comment類中,當你實例化對象時,share()方法就可以使用了。

總結:
Trait 無法如 Class 一樣使用 new 實例化
單個 Trait 可由多個 Trait 組成
在單個 Class 中,可以使用多個 Trait
使用trait時候應該堅決避免命名沖突,尤其是同時使用多個trait時。

上篇文章: 我在北京寫代碼 ,你在哪兒?

掃描關注微信公眾號:專注PHP學習

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22350.html

相關文章

  • PHP 特性之 trait (一)

    摘要:在閱讀文檔的時候看到一個類是以聲明的。是一種代碼復用技術,為的單繼承限制提供了一套靈活的代碼復用機制。下面把的代碼做一個修改以上代碼會輸出。可以看出優先級的順序為,當前類的優先級基類。 ??在閱讀laravel文檔的時候看到一個類 是以 Trait聲明的。平時在工作中從來沒有用過,于是就去看了下官方文檔。原來這個類早在php5.4.0就有了。可惜在項目中從來沒有用過。 ??Trait看...

    ermaoL 評論0 收藏0
  • 關于PHPTrait特性

    摘要:關于作者程序開發人員,不拘泥于語言與技術,目前主要從事和前端開發,使用和,端使用混合式開發。和組合的語義定義了一種減少復雜性的方式,避免傳統多繼承和類相關典型問題。它為傳統繼承增加了水平特性的組合也就是說,應用的幾個之間不需要繼承。 關于作者 程序開發人員,不拘泥于語言與技術,目前主要從事PHP和前端開發,使用Laravel和VueJs,App端使用Apicloud混合式開發。合適和...

    wind3110991 評論0 收藏0
  • php 代碼復用機制--traits

    摘要:是一種為類似的單繼承語言而準備的代碼復用機制。因為中的變量環境是基于函數的,所以會輸出博客鏈接代碼復用機制,本文后續如有更新將會在博客更新。 提到 php 的代碼復用,我們可能第一時間會想到繼承,但是這種單繼承語言一旦派生的子類過多,那么會產生一系列的問題,比如依賴父類、耦合性太大、破壞了類的封裝性。那么有沒有更好的方法來實現代碼復用呢? 自 PHP 5.4.0 起,PHP 實現了另外...

    yedf 評論0 收藏0
  • 簡述我所理解 PHP Trait

    摘要:和組合的語義定義了一種減少復雜性的方式,避免傳統多繼承和類相關典型問題。隊列的目的是將耗時的任務延時處理,比如發送郵件,從而大幅度縮短請求和相應的時間。同樣的道理,根據引入不同的來完成對應的功能。 showImg(https://segmentfault.com/img/remote/1460000010868178); Trait 概念 在常規的 PHP 開發中,我們都習慣于先編寫一...

    gecko23 評論0 收藏0
  • php易錯筆記-類與對象,命名空間

    摘要:類與對象基本概念如果在之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。如果一個類被聲明為,則不能被繼承。命名空間通過關鍵字來聲明。 類與對象 基本概念 new:如果在 new 之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。 Example #3 創建一個實例 ...

    MartinHan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<