search
Homephp教程php手册php组合,php排列组合算法

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

 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools