찾다
php教程php手册php组合 - w&y

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

模式一:

<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();

模式二:

<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();
View Code

 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.