>  기사  >  백엔드 개발  >  PHP_php 기술의 일부 고급 객체 지향 프로그래밍 기능에 대한 소개 예

PHP_php 기술의 일부 고급 객체 지향 프로그래밍 기능에 대한 소개 예

WBOY
WBOY원래의
2016-05-16 20:04:03819검색

일반적으로 PHP를 배우려면 다음 기능을 이해해야 합니다.

객체 복제. PHP5의 OOP 모델에 대한 주요 개선 사항 중 하나는 모든 개체를 값이 아닌 참조로 처리하는 것입니다. 그러나 모든 객체가 참조로 처리된다면 객체의 복사본을 어떻게 생성합니까? 대답은 객체를 복제하는 것입니다.

<&#63;php
class Corporate_Drone{
 private $employeeid;
 private $tiecolor;
 function setEmployeeID($employeeid) {
 $this->employeeid = $employeeid;
 }

 function getEmployeeID() {
 return $this->employeeid;
 }
 
 function setTiecolor($tiecolor) {
 $this->tiecolor = $tiecolor;
 }
 
 function getTiecolor() {
 return $this->tiecolor;
 }
}

$drone1 = new Corporate_Drone();
$drone1->setEmployeeID("12345");
$drone1->setTiecolor("red");
$drone2 = clone $drone1;
$drone2->setEmployeeID("67890");

printf("drone1 employeeID:%d <br />",$drone1->getEmployeeID());
printf("drone1 tie color:%s <br />",$drone1->getTiecolor());
printf("drone2 employeeID:%d <br />",$drone2->getEmployeeID());
printf("drone2 tie color:%s <br />",$drone2->getTiecolor());
&#63;>

상속되었습니다. 앞서 언급했듯이 상속을 통해 클래스 계층 구조를 구축하는 것은 OOP의 핵심 개념입니다.

class Employee {
 ...
}

class Executive extends Employee{
 ...
}

class CEO extends Executive{
 ...
}

인터페이스. 인터페이스는 구현되지 않은 메서드 정의 및 상수의 모음으로, 클래스 청사진과 동일합니다. 인터페이스는 클래스가 수행할 수 있는 작업만 정의할 뿐 구현 세부 사항은 포함하지 않습니다. 이 장에서는 인터페이스에 대한 PHP5의 지원을 소개하고 이 강력한 OOP 기능을 보여주는 몇 가지 예를 제공합니다.

<&#63;php
interface IPillage
{
 // CONST 1;
 function emptyBankAccount();
 function burnDocuments();
}

class Employee {

}

class Excutive extends Employee implements IPillage {
 private $totalStockOptions;
 function emptyBankAccount() {
 echo "Call CFO and ask to transfer funds to Swiss bank account";
 }
 function burnDocuments() {
 echo "Torch the office suite.";
 }
}

class test {
 function testIP(IPillage $ib) {
 echo $ib->emptyBankAccount();
 }
}
$excutive = new Excutive();
$test = new test();
echo $test->testIP($excutive);
&#63;>

추상 수업. 추상 클래스는 본질적으로 인스턴스화할 수 없는 클래스입니다. 추상 클래스는 인스턴스화 가능한 클래스(구체 클래스라고 함)에 상속됩니다. 추상 클래스는 완전히 구현되거나 부분적으로 구현되거나 전혀 구현되지 않을 수 있습니다.

abstract class Class_name
{
 //insert attribute definitions here
 //insert method definitions here
}

네임스페이스. 네임스페이스는 상황에 따라 다양한 라이브러리와 클래스를 나눌 수 있어 코드 기반을 보다 효과적으로 관리하는 데 도움이 됩니다.

<&#63;php
namespace Library;
class Clean {
 function printClean() {
 echo "Clean...";
 }
}
&#63;>

<&#63;php
include "test.php";
$clean = new \Library\Clean();
$clean->printClean();
&#63;>

다른 객체지향 언어를 사용해 본 적이 있다면 왜 다른 언어에 익숙한 일부 OOP 기능이 위 기능에 포함되어 있지 않은지 궁금할 것입니다. 이유는 간단합니다. PHP는 이러한 기능을 지원하지 않습니다. 혼란을 피하기 위해 PHP가 지원하지 않는 고급 OOP 기능 목록은 다음과 같습니다.

  • 메서드 오버로딩. PHP는 함수 오버로딩을 통한 다형성을 지원하지 않으며 Zend 웹사이트의 토론에 따르면 결코 지원되지 않을 수도 있습니다. 구체적인 이유를 알아보려면 http://www.zend.com/php/ask_experts.php
  • 를 확인하세요.
  • 연산자 오버로드. 현재 수정되는 데이터 유형에 따라 연산자에 새로운 의미를 부여하는 기능은 지원되지 않습니다. zend 웹사이트의 토론에 따르면 이 기능이 향후 구현될 가능성은 거의 없습니다.
  • 다중 상속. PHP는 다중 상속을 지원하지 않습니다. 그러나 여러 인터페이스 구현을 지원합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.