日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP 使用 Trait 解決 PHP 單繼承問題詳解

瀏覽:213日期:2022-09-10 17:04:43

本文實例講述了PHP 使用 Trait 解決 PHP 單繼承問題。分享給大家供大家參考,具體如下:

什么是繼承?

繼承實際上是存在于面向對象程序設計中的兩個類之間的一種關系,是面向對象程序設計方法的一個重要手段,通過繼承可以更有效地組織程序結構,明確類間的關系,充分利用已有的類來完成更復雜、更深入的開發。

當一個類擁有另一個類的所有數據和操作時,就稱這兩個類之間具有繼承關系。

被繼承的類稱為父類,繼承了父類的所有數據和操作的類稱為子類。

在 PHP 中用 extends 表明子類與父類的繼承關系。

在面向對象的程序設計中,采用繼承的方式來組織設計系統中的類,可以提高程序的抽象程度,更接近人的思維方式,使程序結構更清晰并降低編碼和維護的工作量。

單繼承是指任何一個類都只有一個單一的父類,其結構可以用單純的樹狀結構來表示; 多繼承是指一個類可以有一個以上的父類,它的靜態的數據屬性和操作從所有這些父類中繼承,其結構應以復雜的網狀結構來表示。

PHP 僅支持單繼承,而多繼承是通過接口或者 Trait 來實現的。

PHP 的單繼承示例:

// 單繼承:一個子類只能有一個父類class A{ function show() { echo 'A'; }}class B{ function show() { echo 'B'; }}class C extends A{}$c = new C;$c->show();使用 Trait 解決 PHP 的單繼承

自 PHP 5.4.0 起,PHP 實現了一種代碼復用的方法,稱為 trait。

Trait 是為類似 PHP 的單繼承語言而準備的一種代碼復用機制 Trait 為了減少單繼承語言的限制,使開發人員能夠自由地在不同層次結構內獨立的類中復用 method Trait 和 Class 組合的語義定義了一種減少復雜性的方式,避免傳統多繼承和 Mixin 類相關典型問題 無法通過 trait 自身來實例化

示例:

<?php trait Reader{ public function add($var1,$var2){ return $var1+$var2; } } trait writer { public function multiplication($var1,$var2){ return $var1*$var2; } } class File { use Reader; use writer; public function calculate($var1,$var2){ echo 'Ressult of addition:'.$this->add($var1,$var2) .'n'; echo 'Ressult of multiplication:'.$this->multiplication($var1,$var2); } } $o = new File(); $o->calculate(5,3);多個 trait

通過逗號分隔,在 use 聲明列出多個 trait,可以都插入到一個類中。

<?phptrait Hello { public function sayHello() { echo ’Hello ’; }}trait World { public function sayWorld() { echo ’World’; }}class MyHelloWorld { use Hello, World; public function sayExclamationMark() { echo ’!’; }}$o = new MyHelloWorld();$o->sayHello();$o->sayWorld();$o->sayExclamationMark();沖突的解決

如果兩個 trait 都插入了一個同名的方法,如果沒有明確解決沖突將會產生一個致命錯誤。

為了解決多個 trait 在同一個類中的命名沖突,需要使用 insteadof 操作符來明確指定使用沖突方法中的哪一個。

以上方式僅允許排除掉其它方法,as 操作符可以 為某個方法引入別名。 注意,as 操作符不會對方法進行重命名,也不會影響其方法。

示例:

<?phptrait A { public function smallTalk() { echo ’a’; } public function bigTalk() { echo ’A’; }}trait B { public function smallTalk() { echo ’b’; } public function bigTalk() { echo ’B’; }}class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; }}class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; }}從 trait 來組成 trait

正如 class 能夠使用 trait 一樣,其它 trait 也能夠使用 trait。在 trait 定義時通過使用一個或多個 trait,能夠組合其它 trait 中的部分或全部成員。

<?phptrait Hello { public function sayHello() { echo ’Hello ’; }}trait World { public function sayWorld() { echo ’World!’; }}trait HelloWorld { use Hello, World;}class MyHelloWorld { use HelloWorld;}$o = new MyHelloWorld();$o->sayHello();$o->sayWorld();Trait 的抽象成員

為了對使用的類施加強制要求,trait 支持抽象方法的使用。

<?phptrait Hello { public function sayHelloWorld() { echo ’Hello’.$this->getWorld(); } abstract public function getWorld();}class MyHelloWorld { private $world; use Hello; public function getWorld() { return $this->world; } public function setWorld($val) { $this->world = $val; }}Trait 的靜態成員

Traits 可以被靜態成員靜態方法定義。

<?php// 靜態成員trait Counter { public function inc() { static $c = 0; $c = $c + 1; echo '$cn'; }}class C1 { use Counter;}class C2 { use Counter;}$o = new C1(); $o->inc(); // echo 1$p = new C2(); $p->inc(); // echo 1

<?php// 靜態方法trait StaticExample { public static function doSomething() { return ’Doing something’; }}class Example { use StaticExample;}Example::doSomething();

<?php// 定義屬性trait PropertiesTrait { public $x = 1;}class PropertiesExample { use PropertiesTrait;}$example = new PropertiesExample;$example->x;

參考:

https://www.php.net/manual/zh/language.oop5.traits.php

https://learnku.com/php/t/37694

https://www..com/what-is-traits-in-php

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费视频一区二区三区在线观看| 日韩中文av| 久久久夜夜夜| 99日韩精品| 精品国产乱码久久久| 日韩中文视频| 人人爱人人干婷婷丁香亚洲| 久久久久久黄| 免费在线播放第一区高清av| 中文字幕亚洲在线观看| 日韩中文欧美| 福利在线一区| 日本美女一区| 精品久久免费| 日韩国产一区二区三区| 久久男人天堂| 国产精品99一区二区| 亚洲国产成人精品女人| 欧美三级精品| 黄色欧美在线| 国产精品一区高清| 日韩制服丝袜先锋影音| 欧美/亚洲一区| 少妇久久久久| 今天的高清视频免费播放成人| 美女av一区| 国产精品毛片一区二区在线看| 久久不见久久见国语| 国产欧美69| 欧美精品影院| 国产精品久一| 美女高潮久久久| 国产精品一区二区av交换| 日韩av不卡在线观看| 久久国产三级| 国产一卡不卡| 国产精久久久| 999精品在线| 久久久精品五月天| 日韩视频二区| 久久av中文| 日韩美女精品| 蜜臀久久99精品久久久久宅男 | 米奇777超碰欧美日韩亚洲| 国产精一区二区| 国产日韩三级| 亚洲69av| 欧美一区网站| 亚洲欧美日韩专区| 国产精品调教| 国产美女视频一区二区| 日韩精品视频网| 欧美日韩xxxx| 欧美日韩精品一区二区三区在线观看| 欧美综合国产| 综合激情视频| 日韩av影院| 国产日韩在线观看视频| 日韩高清不卡一区| 国产丝袜一区| 成人在线视频中文字幕| 麻豆传媒一区二区三区| 亚洲天堂免费电影| 日韩黄色免费网站| 一区二区精品| 日韩综合小视频| 青青草91视频| 亚洲精品**中文毛片| 亚洲小说欧美另类婷婷| 久久av在线| 久久99蜜桃| 欧美 日韩 国产一区二区在线视频| 中文字幕亚洲影视| 色在线中文字幕| 国产精品白浆| 开心激情综合| 日本午夜大片a在线观看| 久久久蜜桃一区二区人| 日韩理论片av| 伊人久久婷婷| 一区二区三区网站| 国产精品伊人| 97精品国产福利一区二区三区| av中文字幕在线观看第一页| 播放一区二区| 视频一区免费在线观看| 日韩av三区| 国产精品伦理久久久久久| 亚洲特级毛片| 国产亚洲高清一区| 群体交乱之放荡娇妻一区二区| 天使萌一区二区三区免费观看| 日韩和欧美的一区| 国产精品va视频| 在线观看精品| 日本国产一区| 久久国产亚洲精品| 日韩欧美中文字幕电影| 日韩免费高清| 91免费精品国偷自产在线在线| 亚洲网站视频| 国产精品免费精品自在线观看| 久久久水蜜桃av免费网站| 日韩高清欧美激情| 亚洲精品网址| 黑人精品一区| 国产精品欧美日韩一区| 影音国产精品| 久久中文字幕一区二区三区| 视频一区欧美日韩| 欧美日韩激情| 日韩av免费| 麻豆精品在线| 欧美一区不卡| 一区二区三区国产在线| 99久久夜色精品国产亚洲狼| 色婷婷色综合| 麻豆视频一区二区| 国产极品模特精品一二| 日韩在线一区二区| 婷婷精品进入| 日本一区二区免费高清| 国产精品嫩草影院在线看| 国产亚洲一级| 欧美日韩一区二区综合| 韩国久久久久久| 日本一二区不卡| 97人人精品| 日本精品在线中文字幕| 日韩毛片视频| 久久久夜精品| 一区在线视频观看| 日韩一级网站| 亚洲综合另类| 亚洲字幕久久| 奇米亚洲欧美| 精品在线网站观看| 日韩在线短视频| 韩国精品主播一区二区在线观看| 成人午夜在线| 亚洲激情久久| 视频国产精品| 国产精品久久国产愉拍| 精品视频在线你懂得| 在线看片福利| 亚洲免费中文| 国产精品视频一区视频二区| 精品久久影院| 午夜在线视频一区二区区别| 少妇高潮一区二区三区99| 你懂的国产精品永久在线| 天堂√中文最新版在线| 亚洲欧美一区在线| 亚洲欧美日韩国产综合精品二区| 免费看日韩精品| 欧美成人精品午夜一区二区| 今天的高清视频免费播放成人| 蜜桃av一区二区| 精品国产亚洲一区二区在线观看| 久久久久久久久久久9不雅视频| 亚洲伊人影院| 日韩一区三区| 日韩精品亚洲专区在线观看| 97精品国产福利一区二区三区| 久久夜色精品| 免费高潮视频95在线观看网站| 亚洲免费观看高清完整版在线观| 高清久久一区| 亚洲综合专区| 欧美日韩一区二区综合| 91精品国产自产观看在线| 99久久久久国产精品| 国产精品探花在线观看| 美女久久一区| 欧美午夜精彩| 久久精品亚洲一区二区| 少妇精品久久久一区二区| 免费视频亚洲| 捆绑调教日本一区二区三区| 日韩欧美中文在线观看| 亚洲精品电影| 日韩精品免费一区二区在线观看| 国产剧情在线观看一区| 久久亚洲电影| 激情欧美一区| av在线资源| 亚洲啊v在线| 电影91久久久| 色婷婷色综合| 国产不卡精品| 成人精品高清在线视频| 国产麻豆一区| 日本国产欧美| 欧美日韩一区二区三区四区在线观看| 国产亚洲一级| 在线免费观看亚洲| 在线观看亚洲精品福利片| 亚洲免费精品| 2023国产精品久久久精品双| 激情婷婷久久|