>백엔드 개발 >PHP 튜토리얼 >인터페이스 추상 클래스 PHP에서 '인터페이스 지향 프로그래밍' 및 '결합 방법'을 구현하기 위해 인터페이스, 추상 클래스 및 일반 기본 클래스를 사용하는 방법에 대한 간략한 설명입니다.

인터페이스 추상 클래스 PHP에서 '인터페이스 지향 프로그래밍' 및 '결합 방법'을 구현하기 위해 인터페이스, 추상 클래스 및 일반 기본 클래스를 사용하는 방법에 대한 간략한 설명입니다.

WBOY
WBOY원래의
2016-07-29 08:44:381213검색

코드 복사 코드는 다음과 같습니다.


/*
배우는 동시에 실천도 하고 있습니다. 읽기의 편의를 위해 전문가의 지도를 받아 출판하기도 합니다. 전문가의 지도를 환영합니다...
[Tip] 이 예시는 오류 없이 테스트를 통과했습니다
[시나리오 디자인]
컴퓨터 마더보드 IDE 인터페이스를 시뮬레이션합니다. 예: 마더보드가 자주 액세스할 수 있는 스토리지에는 다음이 포함됩니다. 광학 드라이브, 하드 디스크, 플래시 메모리 등,
편의상 이러한 서로 다른 메모리에 대해 동일한 인터페이스를 설정해야 합니다.
또한 이 예에서는 액세스를 위해 독특한 액세스 방식을 가진 전례 없는 에일리언 메모리도 마더보드에 추가된다고 가정합니다.
따라서 결합된 디자인 패턴을 채택해야 합니다.
[이 예제에서는 주로 설명]
1. 소위 "인터페이스" 모드는 인터페이스, 추상 클래스 및 일반 클래스 상속의 세 가지 방법을 통해 구현됩니다.
A. 부모 클래스로 사용됩니다. 하위 클래스가 특별한 부모 클래스이기 때문에 객체가 사용됩니다!
B. 이 세 가지 구현 방법 중 인터페이스의 기본 클래스 작성 방법, 추상 클래스 및 일반 클래스 상속에 주의하세요!
2. 인터페이스 모드는 그야말로 계약입니다!
3. 프로그래밍의 "커플링 디자인 패턴"!
*/
//---------------------------- ------------------
/*[방법 1] 인터페이스 구현 방법:*/
인터페이스 readandwrite {
function read();
function write();
}
클래스 마더보드{
private $storage
function __construct(readandwrite $obj){
$ this ->storage=$obj;
}
함수 read(){
$this->storage->read()
}
함수 write(){
$this->storage->write();
}
}
class flash는 readandwrite를 구현합니다.{
function __construct(){
echo "나는 플래시 메모리입니다:< ;br> ;";
}
function read(){
echo "데이터 읽기 시작...
";
}
function write(){
echo "데이터 저장 시작...


";
}
}
class yingpan은 읽기 및 쓰기를 구현합니다.{
function __construct(){
echo "나는 하드 디스크입니다. :< br>";
}
function read(){
echo "데이터 읽기 시작...
";
}
function write( ){
echo " 데이터 저장 시작...
";
}
}
class disco Implements readandwrite{
function __construct(){
echo "나는 CD입니다:
";
}
function read(){
echo "데이터 읽기 시작...
";
}
function write(){
echo "저장 시작 데이터...
";
}
}
//------------ --- --------------------- ---------
/*[메서드 2] 추상 클래스 구현 방법:
추상 클래스 readandwrite{
추상 함수 read();
추상 함수 write()
}
클래스 마더보드{
private $storage; 🎜>function __construct(readandwrite $obj){
$this->storage=$obj;
}
function read() {
$this->storage->read() ;
}
function write(){
$this->storage->write()
}
}
class flash는 readandwrite를 확장합니다.{
function __construct (){
echo "저는 플래시입니다:
}
function read(){
echo "데이터 읽기 시작...
"; }
function write(){
echo "데이터 저장 시작...}
}
class yingpan은 readandwrite를 확장합니다.{
function __construct(){
echo "내가 하드 디스크입니다:
}
function read(){
echo "데이터 읽기 시작...
";
function write(){
echo "데이터 저장 시작...}
}
class disco는 readandwrite를 확장합니다.{
function __construct(){
echo "나는 디스크입니다:
}
function read(){
echo "데이터 읽기 시작...
"
>function write(){
echo "데이터 저장 시작... .
"
}
}
*/
//--------- ----------------- --------------------------------- ------------
// [방법 3] 일반적인 클래스 상속 구현 방법:
/*
class readandwrite{
function read(){
echo "읽기..........." ;
}
function write(){
echo "쓰기..........."; >}
}
클래스 마더보드{
private $storage;
function __construct(readandwrite $obj){
$this->storage=$obj; function read(){
$this->storage->read();
}
function write(){
$this->storage->write(); 🎜>}
}
클래스 플래시는 읽기 및 쓰기를 확장합니다.{
function __construct(){
echo "나는 플래시 메모리입니다:
}
function read() {
echo "데이터 읽기 시작.... ..
";
}
function write(){
echo "데이터 저장 시작...
";
}
}
class yingpan은 readandwrite를 확장합니다.{
function __construct(){
echo "나는 하드 디스크입니다:
"
}
function read (){
echo "데이터 읽기 시작...
"
}
function write(){
echo "데이터 저장 시작...
"; 🎜>}
}
class disco는 readandwrite를 확장합니다.{
function __construct(){
echo "나는 CD입니다:
}
function read() {
echo " 데이터 읽기 시작...
"
}
function write(){
echo "데이터 저장 시작...
"; }
}
*/
//----------------------------------- - ----------------------
/*
【커플링 모드】
결합 모드는 서로 다른 표준을 가진 두 클래스를 결합하는 것입니다(이 예에서는 인터페이스, 추상 클래스, 일반 기본 클래스 및 Alien 저장소가 서로 다른 액세스 방법을 가짐).
중간 변환기를 통해 동일한 표준을 달성하며, 전송과 마찬가지로 line - 이 예는 알 수 없는 클래스의 Rdata 및 Wdata 메서드를 읽기 및 쓰기 메서드로 변환하여 이 예의 인터페이스, 추상 클래스 및 일반 기본 클래스와 동일한 액세스 방법을 달성하는 것입니다. 이 예에서 중간 변환기는 Apdater 클래스.
PHP에서는 하나의 클래스만 상속할 수 있지만 여러 인터페이스는 상속할 수 있으므로 세 가지 결합 방법이 생성되었습니다.
방법 1: 중간 변환기 Apdater 클래스는 추상 클래스 또는 일반 기본 클래스를 상속하지만 PHP는 상속만 수행하므로 클래스를 상속받을 수 있으므로 Apdater
클래스에 외계인 메모리 클래스의 알 수 없는 객체를 정의하고, 상속받은 추상 클래스나 일반 기본 클래스의 액세스 메서드를 오버로드하여 액세스 메서드를 변환
합니다. 동일한 액세스 방법의 목적.
방법 2: 중간 변환기 Apdater 클래스는 알 수 없는 외계 메모리 클래스와 인터페이스를 상속합니다. 이때 Apdater 클래스
(parent::Rdata() 및 parent::Wdata의 액세스 메서드를 직접 사용할 수 있습니다. ()—— 하위 클래스가 PHP에서 상위 클래스 메서드를 호출하는 방식), 인터페이스 지정 메서드
를 구현하여 액세스 메서드를 동일한 액세스 메서드로 변환하는 방식입니다.
방법 3: 인터페이스를 상속(구현)한다는 점을 제외하면 방법 1과 동일합니다.
*/
//------ - ------------------------------------------------- -
/*
[방법 1]
*/
/*
class unknow{
function __construct(){
echo " I 지구인에게는 알려지지 않은 외계 저장소입니다. 지구의 저장소와 다른 액세스 방법을 가지고 있습니다:
";
}
function Rdata(){
echo " 지금 읽고 있어요...
";
}
function Wdata(){
echo "지금 쓰고 있어요...
" ;
}
}
class Adpater는 readandwrite를 확장합니다.{
private $obj;
function __construct(unknow $x){
$this->obj=$x; read(){
$this->obj->Rdata()
}
function write(){
$this->obj-> >}
}
*/
//--------------- -------- ----------------------------------
/*
[방법 2]
class unknow{
function __construct(){
echo "나는 지구상 사람들에게 알려지지 않은 외계 기억입니다. 나는 지구상의 기억과 다른 기억을 가지고 있습니다. 액세스 방법: < /font>
";
}
function Rdata(){
echo "지금 읽고 있습니다...
";
}
function Wdata( ){
echo "지금 쓰고 있습니다...
"
}
}
class Adpater는 알 수 없음을 구현합니다. readandwrite {
function read(){
parent::Rdata();
}
function write(){
parent::Wdata()
}
}
*/
//--- ------------------------- ------------ ------
/*
【방법 3】
*/
class unknow{
function __construct(){
echo "나는 지구상의 사람들에게 알려지지 않은 외계인 저장소입니다. 나는 지구상의 저장소와 다른 접근 방법을 가지고 있습니다: < /font>
"; }
function Rdata(){
echo "지금 읽고 있습니다...
"
}
function Wdata(){
echo "지금 쓰고 있습니다. ...
";
}
}
Adpater 클래스는 읽기 및 쓰기를 구현합니다.{
private $obj;
function __construct(unknow $x){
$this-> ;obj=$x;
}
함수 읽기(){
$this->obj->Rdata( )
}
함수 쓰기(){
$ this->obj->Wdata();
}
}
//[프로그램 본문 호출]
echo " 객체 지향 프로그래밍 - 인터페이스
";
$storage1=새 플래시( );
$computer=새 마더보드($storage1);
$computer ->읽기();
$computer->write();
$storage2=new yingpan()
$computer=새 마더보드($storage2); ;읽기();
$computer->write();
$storage3=새 디스코()
$computer=새 마더보드($storage3); ();
$computer->write();
$un_storage=new unknow();
$ apdaterx=new Adpater($un_storage)
$computer=새 마더보드($apdaterx );
$컴퓨터->읽기();


위는 인터페이스, 추상 클래스, 일반 기본 클래스를 사용하여 "인터페이스 지향 프로그래밍"과 "결합 방법"을 구현하는 PHP의 인터페이스 추상 클래스에 대한 간략한 소개입니다. 인터페이스 추상 클래스의 내용도 포함되어 있습니다. PHP 튜토리얼에 관심이 있다면 도움이 될 것입니다.


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