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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

什么是繼承?

繼承實(shí)際上是存在于面向?qū)ο蟪绦蛟O(shè)計(jì)中的兩個類之間的一種關(guān)系,是面向?qū)ο蟪绦蛟O(shè)計(jì)方法的一個重要手段,通過繼承可以更有效地組織程序結(jié)構(gòu),明確類間的關(guān)系,充分利用已有的類來完成更復(fù)雜、更深入的開發(fā)。

當(dāng)一個類擁有另一個類的所有數(shù)據(jù)和操作時,就稱這兩個類之間具有繼承關(guān)系。

被繼承的類稱為父類,繼承了父類的所有數(shù)據(jù)和操作的類稱為子類。

在 PHP 中用 extends 表明子類與父類的繼承關(guān)系。

在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,采用繼承的方式來組織設(shè)計(jì)系統(tǒng)中的類,可以提高程序的抽象程度,更接近人的思維方式,使程序結(jié)構(gòu)更清晰并降低編碼和維護(hù)的工作量。

單繼承是指任何一個類都只有一個單一的父類,其結(jié)構(gòu)可以用單純的樹狀結(jié)構(gòu)來表示; 多繼承是指一個類可以有一個以上的父類,它的靜態(tài)的數(shù)據(jù)屬性和操作從所有這些父類中繼承,其結(jié)構(gòu)應(yīng)以復(fù)雜的網(wǎng)狀結(jié)構(gòu)來表示。

PHP 僅支持單繼承,而多繼承是通過接口或者 Trait 來實(shí)現(xiàn)的。

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 實(shí)現(xiàn)了一種代碼復(fù)用的方法,稱為 trait。

Trait 是為類似 PHP 的單繼承語言而準(zhǔn)備的一種代碼復(fù)用機(jī)制 Trait 為了減少單繼承語言的限制,使開發(fā)人員能夠自由地在不同層次結(jié)構(gòu)內(nèi)獨(dú)立的類中復(fù)用 method Trait 和 Class 組合的語義定義了一種減少復(fù)雜性的方式,避免傳統(tǒng)多繼承和 Mixin 類相關(guān)典型問題 無法通過 trait 自身來實(shí)例化

示例:

<?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 都插入了一個同名的方法,如果沒有明確解決沖突將會產(chǎn)生一個致命錯誤。

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

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

示例:

<?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 的抽象成員

為了對使用的類施加強(qiáng)制要求,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 的靜態(tài)成員

Traits 可以被靜態(tài)成員靜態(tài)方法定義。

<?php// 靜態(tài)成員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// 靜態(tài)方法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

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲一卡2卡3卡4卡新区| 日本不卡不码高清免费观看 | 成人高清一区| 神马午夜在线视频| 水蜜桃久久夜色精品一区的特点| 日本特黄久久久高潮| 成人精品高清在线视频| 伊人久久亚洲热| 欧美一级全黄| 久久av影院| 欧美激情五月| 精品免费视频| 日本亚洲视频在线| 亚洲天堂日韩在线| 日本va欧美va瓶| 国产精品nxnn| 女生影院久久| 亚洲午夜91| 视频一区欧美精品| 日韩一区二区三区免费视频| 日韩国产高清在线| 麻豆一区二区三| 四虎成人av| 欧美一区二区三区激情视频| 伊人久久大香线蕉av不卡| 日韩一级精品| 欧美日韩亚洲一区三区| 九九久久国产| av高清不卡| 亚洲一区二区三区四区五区午夜| 视频一区二区国产| 欧美日韩91| 日韩在线综合| 亚洲欧美日韩国产综合精品二区 | 999国产精品永久免费视频app| 欧美激情另类| 亚洲一级大片| 99精品综合| 国产精品视频一区二区三区四蜜臂 | 在线国产一区二区| 亚洲v天堂v手机在线| 亚洲风情在线资源| 日韩精品成人| 免费国产自久久久久三四区久久| 欧美精品观看| 国产一区导航| 成人久久久久| 久久免费精品| 蜜臀久久99精品久久久久久9 | 久久国产精品久久w女人spa| 精品高清久久| 日本欧美韩国一区三区| 欧美二区视频| 麻豆国产91在线播放| 亚洲精品伦理| 不卡视频在线| 成人精品视频| 欧美日韩精品一区二区三区视频 | 久久国产88| 久久国产中文字幕| 精品视频在线观看网站| 日韩精品久久理论片| 在线亚洲自拍| 日韩精品免费一区二区在线观看| 国产精品一级| 亚洲bt欧美bt精品777| 国产在线不卡| 韩日一区二区| 久久爱www成人| 人人爱人人干婷婷丁香亚洲| 欧美精品一线| 99国产精品一区二区| av免费不卡国产观看| 久久超级碰碰| 国产精品一区二区三区四区在线观看 | 日韩精品久久理论片| 日韩中文字幕一区二区三区| 国产99久久| 日韩精品1区| 麻豆精品久久| 国产精品毛片久久久| 日韩国产在线观看一区| 亚洲www啪成人一区二区| 999久久久亚洲| 国产精品探花在线观看| 亚洲一区二区三区免费在线观看| 97精品在线| 国产欧美激情| 蜜桃久久av一区| 亚洲国产专区| www.九色在线| 久久99蜜桃| 日韩欧美中文字幕在线视频| 91精品福利| 国产一区二区三区探花| 日韩精品亚洲一区二区三区免费| 欧美精品黄色| 国产在线欧美| 99久久亚洲精品| 超碰超碰人人人人精品| 精品久久美女| 国产精品3区| 欧美亚洲一级| 日本h片久久| 日韩综合小视频| 亚洲一区二区小说| 国产亚洲一级| 99国产精品久久久久久久成人热 | a国产在线视频| 美女视频网站久久| 欧美视频久久| 欧美日本不卡| 久久精品99久久久| 九九九精品视频| 久久男人天堂| 九九综合九九| 免费观看在线综合色| 日韩精品一区二区三区中文 | 日韩深夜视频| 亚洲精品极品少妇16p| 西西人体一区二区| 一区二区三区四区日韩| 日本aⅴ亚洲精品中文乱码| 国产精品久久777777毛茸茸| 日产午夜精品一线二线三线| 99久久久久国产精品| 性一交一乱一区二区洋洋av| 日韩欧美在线精品| 精品一区视频| 久久美女精品| 亚洲久久在线| 久久久91麻豆精品国产一区| 精品高清久久| 欧美va天堂在线| 日韩精品免费观看视频| 国产不卡精品| 亚洲精品1区| 国产亚洲欧美日韩精品一区二区三区| 国产一区调教| 夜久久久久久| 国产美女亚洲精品7777| 国产乱码午夜在线视频| 伊人精品在线| 欧美欧美黄在线二区| 久久电影tv| 久久亚洲欧美| 久久精品亚洲一区二区| 久久国产小视频| 日韩高清一区| 日韩一区二区在线免费| 亚洲bt欧美bt精品777| 欧美丰满日韩| 日韩中出av| 日韩精品网站| 日韩高清不卡一区| 91亚洲一区| 亚洲无线观看| 日本久久精品| 婷婷视频一区二区三区| 丝袜诱惑一区二区| 日韩中出av| 亚洲不卡系列| 亚洲精品极品| 91一区二区三区四区| 中文字幕一区二区精品区| 伊人久久av| 欧美精品中文| 亚洲激情二区| 色爱综合网欧美| 91精品国产自产在线丝袜啪| 久久一级电影| 麻豆传媒一区二区三区| 免费在线观看一区二区三区| 亚洲午夜天堂| 国产精品视频首页| 亚洲欧美日韩国产一区| 激情国产在线| 日本久久一区| 不卡中文一二三区| 日本激情一区| 久久精品99国产精品日本| 91高清一区| 亚洲一区资源| 国产毛片久久久| 三级欧美韩日大片在线看| 在线一区视频观看| 国产精品久久777777毛茸茸| 亚洲深深色噜噜狠狠爱网站| 91精品国产91久久久久久黑人| 国产精品欧美在线观看| 美女黄网久久| 在线成人动漫av| 精品网站999| 视频一区日韩精品| 一本一本久久| 欧美va天堂| 久久免费高清| 成人三级高清视频在线看| 国产欧美在线| 日本一区二区三区视频在线看|