您現在的位置是:電腦技術吧?>? 故障問題 ??>??代碼復用是什么,代碼復用的方式??>??正文詳情

代碼復用是什么,代碼復用的方式

貿美麗2019-12-12 18:02:11 人圍觀
簡介通過封裝可以實現代碼復用嗎本文主要介紹了在PHP中利用traits實現代碼重用的實例。本文介紹了trait的簡單使用、優先級問題、trait的多重沖突問題,可以用來修改方法訪問控制、tr代碼

這篇文章主要介紹了PHP中的traits實現代碼復用使用實例,本文講解了Trait簡單使用、優先級問題、多個Trait沖突問題、as可用來修改方法訪問控制、Trait中使用Trait等內容,需要的朋友可以參考下  PHP5.4后新增traits實現代碼復用機制,Trait和類相似,但不能被實例化,無需繼承,只需要在類中使用關鍵詞use引入即可,可引入多個Traits,用','隔開。

  (1)Trait簡單使用  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ?php trait A { public $var1 = 'test1'; public function test1() { echo 'trait A::test1()'; } } trait B { public $var2 = 'test2'; public function test2() { echo 'trait B::test2()'; } } class C { use A,B; } $c = new C(); echo $c-var1; //test1 $c-test2(); //trait B::test2()   (2)優先級問題  Trait會覆蓋繼承的方法,當前類會覆蓋Trait方法。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 trait A { public $var1 = 'test'; public function test() { echo 'A::test()'; } public function test1() { echo 'A::test1()'; } } class B { public function test() { echo 'B::test()'; } public function test1() { echo 'B::test1()'; } } class C extends B{ use A; public function test() { echo 'c::test()'; } } $c = new C(); $c-test(); //c::test() $c-test1(); //A::test1()   (3)多個Trait沖突問題  如果沒有解決沖突,會產生致命錯誤;  可用insteadof來明確使用沖突中哪一個方法;  可用as操作符將其中一個沖突方法另起名;  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 trait A { public function test() { echo 'A::test()'; } } trait B { public function test() { echo 'B::test()'; } } class C { use A,B { B::test insteadof A; B::test as t; } } $c = new C(); $c-test(); //B::test() $c-t(); //B::test() 可以用as另起名   (4)as可用來修改方法訪問控制  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 trait HelloWorld { public function sayHello () { echo 'Hello World!' ; } } // 修改 sayHello 的訪問控制 class A { use HelloWorld { sayHello as protected; } } // 給方法一個改變了訪問控制的別名 // 原版 sayHello 的訪問控制則沒有發生變化 class B { use HelloWorld { sayHello as private myPrivateHello ; } } $b = new A(); $b-sayHello(); //Fatal error: Call to protected method A::sayHello() from context ''   (5)Trait中使用Trait  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 trait A { public function test1() { echo 'test1'; } } trait B { public function test2() { echo 'test2'; } } trait C { use A,B; } class D { use C; } $d = new D(); $d-test2(); //test2   (6)Trait支持抽象方法、支持靜態方法、不可以直接定義靜態變量,但靜態變量可被trait方法引用。

  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 trait A { public function test1() { static $a = 0; $a ; echo $a; } abstract public function test2(); //可定義抽象方法 } class B { use A; public function test2() { } } $b = new B(); $b-test1(); //1 $b-test1(); //2   (7)Trait可定義屬性,但類中不能定義同樣名稱屬性  ? 1 2 3 4 5 6 7 8 trait A { public $test1; } class B { use A; public $test2;

版權聲明:本文由 貿美麗 整理編輯。

原標題:代碼復用性,代碼可復用性

轉載注明出處:http://www.dn9ww09s.icu/fault/15367.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • asp中日期時間轉換為日期的函數,asp日期函數

    asp中日期時間轉換為日期的函數,asp日期函數 相關圖片asp轉換函數===========格式時間(顯示)參數:n戔flag1:yyyy-MM-DD HH:MM:SS2:yyyy-MM-DD3:HH:MM:SS4:yyyy-MMasp提取年月的函數...

  • oledb連接數據庫字符串,數據庫連接字符串是什么

    oledb連接數據庫字符串,數據庫連接字符串是什么 相關圖片數據庫拼接字符串設置conn=Server.CreateObject(ADODB.Connection)conn.open DRIVER=DRIVER-do-Microsoftsqlserver連接字符串...

  • 接口標準,什么是接口

    接口標準,什么是接口 相關圖片usba型接口本文主要介紹了phpspl標準庫的接口細節。本文介紹了Coutable接口、outiterator接口、遞歸迭代器接口、seebable迭代器接口、splobsngff接口...

  • 顯示適配器代碼43,什么是適配器模式

    顯示適配器代碼43,什么是適配器模式 相關圖片適配器認證本文主要介紹PHP設計模式的適配器模式代碼示例。本文闡述了目標、角色、應用場景、優點等內容,并給出了代碼示例。需要的朋友可以參考以下目標:可以將一個類的接口...

  • java split函數,split函數分割

    java split函數,split函數分割 相關圖片vba split函數用法%STR1應該處理哪些字符?讓我們看一個字符:item u tempcontent=split(sp'u tempcontent,)/})(0)這里是vb split函數用法...

  • flash與ae能結合,PS和flash結合

    flash與ae能結合,PS和flash結合 相關圖片ps做flashflash LoadVars函數加載ASP頁面,將變量傳遞給頁面,首先讀取記錄,然后加載更新頁面。例如,update.asp?用戶名=?pass=?dim sops flash...

  • 用流,免流如何使用

    用流,免流如何使用 相關圖片幽諾每次使用后全流出來本文主要介紹PHP流的詳細介紹和使用。phpstream是一個內置的核心操作,普通開發人員很少使用它。它用于統一文件、網絡、數據壓縮等類文件操作,并為這些類...

  • kafkastream函數,stringstream的用法

    kafkastream函數,stringstream的用法 相關圖片stream groupby本文主要介紹PHP stream﹣context﹣create()函數的使用示例。Stream﹣context﹣create()函數用于創建打開文件的上下文件選stringstream頭文件...

  • c 字符串長度,字符串長度怎么數

    c  字符串長度,字符串長度怎么數 相關圖片字符串比較大小SP judge中西方混合字符串的長度==================函數名:string length action:judge string lengtjava字符串長度...

  • php7,php實例

    php7,php實例 相關圖片php socket本文通過一個實例說明PHP如何自動地改變每天的隨機問候語。與您分享以供參考。具體分析如下:這里預先定義了一個PHP數組,其中存儲了一些隨機的問候語。打電話時,它php消...

熱評文章

  • 全球在線人數最多的游戲,騰訊在線人數規律

    全球在線人數最多的游戲,騰訊在線人數規律 相關圖片游戲在線人數排行榜%user=request.cookies(21bbsusername)totaluser=application(user)如果instr(totaluser在線人數最多的網友...

  • asp 入門,asp入門實例

    asp 入門,asp入門實例 相關圖片aspnet從入門到精通!--#include File=conn.asp--%Dim idDim Rs,Sql id=Replace(Trim(Request.QueryString零基礎學asp教程...

  • c數據結構庫,java有數據結構模板庫

    c數據結構庫,java有數據結構模板庫 相關圖片數據結構在線題庫本文主要介紹phpspl標準庫數據結構堆的簡單使用實例。并對最大堆和最小堆的相關知識進行了說明。您可以為您的朋友引用堆,它是為實現優先級隊列而設計的數據結...

  • asp調用ashx,asp調用列表

    asp調用ashx,asp調用列表 相關圖片asp javascript一。創建一個新的類庫mytestdl2,右鍵單擊項目mytestdll-properties-generate-check以注冊com互操作性3。打開assemjavascript與asp...

  • mvc設計模式jsp用于實現,jsp開發框架

    mvc設計模式jsp用于實現,jsp開發框架 相關圖片jsp中的mvc模式一:當我第一次學習JSP時,我總是喜歡把它與ASP和PHP進行比較,我習慣用ASP開發模式來編寫JSP。后來,我發現真的很傻。事實上,當JSP出現時,它使用MV簡述jsp中的mvc模式...

  • 有什么方法可以讓pdf組件快些,vue定義組件的方法

    有什么方法可以讓pdf組件快些,vue定義組件的方法 相關圖片vue父組件調用子組件方法Object.createtextfile (filename [, overwrite [, Unicode]]) folderiview組件小...

  • visual studio怎么用,在visual studio

    visual studio怎么用,在visual studio 相關圖片visual studio c最近,服務器總是彈出visual studio實時調試器,這非常令人沮喪。無法關閉。如何解決這個問題,如下圖所示:讓我們分析出現這種情況的原因:彈出應用程序:Vvisual studio 官...

  • sfb47使用實例,fc105使用實例

    sfb47使用實例,fc105使用實例 相關圖片正則表達式使用實例本文主要介紹phpsblobjectstorage。Splobjectstorage是SPL標準庫中的一個數據結構對象容器,用于存儲一組對象,特別是需要唯一標識實例化數組...

  • 無法連接數據庫,無法連接到數據庫

    無法連接數據庫,無法連接到數據庫 相關圖片數據庫連接失敗怎么辦現在有很多新的JSP用戶經常問如何連接數據庫,如何出錯?所以我把重點放在這篇文章上供你參考。實際上,將所有的數據庫邏輯都放在JSP中并不是一個好方法,...

  • php如何遍歷一個文件,php數組遍歷

    php如何遍歷一個文件,php數組遍歷 相關圖片php遍歷文件夾下所有文件這個例子描述了PHP如何遍歷類中包含的所有元素。與您分享以供參考。具體分析如下:這里可以得到PHP類中包含的所有元素的鍵值輸出?12345678910112類m遍歷it...

關注微信

变脸官网查询