php组合,php排列组合算法
为了提高代码的复用性,降低代码的耦合(组合实现的两种方式)
模式一:
<span> 1</span> <?<span>php </span><span> 2</span> <span>//</span><span>组合模式一</span> <span> 3</span> <span>class</span><span> Person{ </span><span> 4</span> <span>public</span> <span>function</span><span> eat(){ </span><span> 5</span> <span>echo</span> "eat.<br/>"<span>; </span><span> 6</span> <span> } </span><span> 7</span> <span>} </span><span> 8</span> <span> 9</span> <span>class</span><span> Phone{ </span><span>10</span> <span>public</span> <span>function</span><span> call(){ </span><span>11</span> <span>echo</span> "phone call.<br/>"<span>; </span><span>12</span> <span> } </span><span>13</span> <span>} </span><span>14</span> <span>15</span> <span>//</span><span>学生也需要call()这个方法,为了提高代码的复用性(组合)</span> <span>16</span> <span>class</span> Student <span>extends</span><span> Person{ </span><span>17</span> <span>private</span> <span>$people</span><span>; </span><span>18</span> <span>public</span> <span>function</span><span> learning(){ </span><span>19</span> <span>echo</span> "learn.<br/>"<span>; </span><span>20</span> <span> } </span><span>21</span> <span>public</span> <span>function</span> func(<span>$class</span>, <span>$method</span>){<span>//</span><span>兼容多个类的多个方法</span> <span>22</span> <span>$this</span>->people = <span>new</span> <span>$class</span><span>; </span><span>23</span> <span>$this</span>->people-><span>$method</span><span>(); </span><span>24</span> <span> } </span><span>25</span> <span>} </span><span>26</span> <span>27</span> <span>$student</span> = <span>new</span><span> Student(); </span><span>28</span> <span>$student</span>-><span>eat(); </span><span>29</span> <span>$student</span>->func('Phone', 'call'<span>); </span><span>30</span> <span>$student</span>->learning();
模式二:
1 php 2 //组合模式二 3 class Person{ 4 public function eat(){ 5 echo "eat."; 6 } 7 } 8 9 trait Drive{ 10 public function call(){ 11 echo "phone call.
"; 12 } 13 } 14 15 class Student extends Person{ 16 use Drive; 17 public function learning(){ 18 echo "learn.
"; 19 } 20 } 21 22 $student = new Student(); 23 $student->eat(); 24 25 //当方法或属性同名时,当前类中的方法会覆盖 trait的 方法,而 trait 的方法又覆盖了基类中的方法 26 $student->call(); 27 $student->learning(); View Code
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
4 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
4 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
1 個月前ByDDD
如何修復KB5055523無法在Windows 11中安裝?
2 週前ByDDD

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。