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
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

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

Hot Article
Assassin's Creed Shadows: Seashell Riddle Solution
1 months agoByDDD
What's New in Windows 11 KB5054979 & How to Fix Update Issues
3 weeks agoByDDD
Where to find the Crane Control Keycard in Atomfall
1 months agoByDDD
How to fix KB5055523 fails to install in Windows 11?
2 weeks agoByDDD
InZoi: How To Apply To School And University
3 weeks agoByDDD

Hot Tools

Atom editor mac version download
The most popular open source editor

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

WebStorm Mac version
Useful JavaScript development tools
