Rumah php教程 php手册 php组合 - w&y

php组合 - w&y

May 20, 2016 am 10:14 AM

为了提高代码的复用性,降低代码的耦合(组合实现的两种方式)

模式一:

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php
</span><span style="color: #008080;"> 2</span> <span style="color: #008000;">//</span><span style="color: #008000;">组合模式一</span>
<span style="color: #008080;"> 3</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Person{
</span><span style="color: #008080;"> 4</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> eat(){
</span><span style="color: #008080;"> 5</span>         <span style="color: #0000ff;">echo</span> "eat.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">}
</span><span style="color: #008080;"> 8</span> 
<span style="color: #008080;"> 9</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Phone{
</span><span style="color: #008080;">10</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> call(){
</span><span style="color: #008080;">11</span>         <span style="color: #0000ff;">echo</span> "phone call.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;">12</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">13</span> <span style="color: #000000;">}
</span><span style="color: #008080;">14</span> 
<span style="color: #008080;">15</span> <span style="color: #008000;">//</span><span style="color: #008000;">学生也需要call()这个方法,为了提高代码的复用性(组合)</span>
<span style="color: #008080;">16</span> <span style="color: #0000ff;">class</span> Student <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Person{
</span><span style="color: #008080;">17</span>     <span style="color: #0000ff;">private</span> <span style="color: #800080;">$people</span><span style="color: #000000;">;
</span><span style="color: #008080;">18</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> learning(){
</span><span style="color: #008080;">19</span>         <span style="color: #0000ff;">echo</span> "learn.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;">20</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">21</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> func(<span style="color: #800080;">$class</span>, <span style="color: #800080;">$method</span>){<span style="color: #008000;">//</span><span style="color: #008000;">兼容多个类的多个方法</span>
<span style="color: #008080;">22</span>         <span style="color: #800080;">$this</span>->people = <span style="color: #0000ff;">new</span> <span style="color: #800080;">$class</span><span style="color: #000000;">;
</span><span style="color: #008080;">23</span>         <span style="color: #800080;">$this</span>->people-><span style="color: #800080;">$method</span><span style="color: #000000;">();
</span><span style="color: #008080;">24</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">25</span> <span style="color: #000000;">}
</span><span style="color: #008080;">26</span> 
<span style="color: #008080;">27</span> <span style="color: #800080;">$student</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Student();
</span><span style="color: #008080;">28</span> <span style="color: #800080;">$student</span>-><span style="color: #000000;">eat();
</span><span style="color: #008080;">29</span> <span style="color: #800080;">$student</span>->func('Phone', 'call'<span style="color: #000000;">);
</span><span style="color: #008080;">30</span> <span style="color: #800080;">$student</span>->learning();
Salin selepas log masuk

模式二:

<span style="color: #008080;"> 1</span> <span style="color: #000000;">php
</span><span style="color: #008080;"> 2</span> <span style="color: #008000;">//</span><span style="color: #008000;">组合模式二</span>
<span style="color: #008080;"> 3</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Person{
</span><span style="color: #008080;"> 4</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> eat(){
</span><span style="color: #008080;"> 5</span>         <span style="color: #0000ff;">echo</span> "eat.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;"> 6</span> <span style="color: #000000;">    }
</span><span style="color: #008080;"> 7</span> <span style="color: #000000;">}
</span><span style="color: #008080;"> 8</span> 
<span style="color: #008080;"> 9</span> <span style="color: #000000;">trait Drive{
</span><span style="color: #008080;">10</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> call(){
</span><span style="color: #008080;">11</span>         <span style="color: #0000ff;">echo</span> "phone call.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;">12</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">13</span> <span style="color: #000000;">}
</span><span style="color: #008080;">14</span> 
<span style="color: #008080;">15</span> <span style="color: #0000ff;">class</span> Student <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Person{
</span><span style="color: #008080;">16</span>     <span style="color: #0000ff;">use</span><span style="color: #000000;"> Drive;
</span><span style="color: #008080;">17</span>     <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> learning(){
</span><span style="color: #008080;">18</span>         <span style="color: #0000ff;">echo</span> "learn.<br>"<span style="color: #000000;">;
</span><span style="color: #008080;">19</span> <span style="color: #000000;">    }
</span><span style="color: #008080;">20</span> <span style="color: #000000;">}
</span><span style="color: #008080;">21</span> 
<span style="color: #008080;">22</span> <span style="color: #800080;">$student</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Student();
</span><span style="color: #008080;">23</span> <span style="color: #800080;">$student</span>-><span style="color: #000000;">eat();
</span><span style="color: #008080;">24</span> 
<span style="color: #008080;">25</span> <span style="color: #008000;">//</span><span style="color: #008000;">当方法或属性同名时,当前类中的方法会覆盖 trait的 方法,而 trait 的方法又覆盖了基类中的方法</span>
<span style="color: #008080;">26</span> <span style="color: #800080;">$student</span>-><span style="color: #000000;">call();
</span><span style="color: #008080;">27</span> <span style="color: #800080;">$student</span>->learning();
Salin selepas log masuk
View Code

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)