>백엔드 개발 >PHP 튜토리얼 >PHP_php 예제의 특성에 대한 간단한 사용 예제

PHP_php 예제의 특성에 대한 간단한 사용 예제

WBOY
WBOY원래의
2016-05-16 20:15:33965검색

PHP 5.4의 특성은 새로 도입된 기능입니다. 중국어로 정확하게 번역하는 방법은 잘 모르겠습니다. 실제 목적은 상황에 따라 다중 상속을 사용하는 것이지만 PHP에는 다중 상속이 없기 때문에 그런 것이 고안되었습니다.
특성은 다양한 클래스에서 호출할 수 있는 메서드 집합으로 이해될 수 있지만 특성은 클래스가 아닙니다! 인스턴스화할 수 없습니다. 먼저 구문을 살펴보기 위해 예를 들어보겠습니다.

<&#63;php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}

}

//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}

//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

다음으로 특성이 사용되는 이유를 살펴보겠습니다. 예를 들어 비즈니스와 개인이라는 두 가지 클래스가 모두 주소 속성을 가지고 있습니다. 전통적인 접근 방식은 두 클래스 모두 클라이언트와 같은 공통 특성을 갖는 상위 클래스를 추상화하는 것입니다. 다음 코드와 같이 클라이언트 클래스의 액세스 속성인 address, business 및 personal을 각각 상속하도록 설정합니다.

// Class Client 
class Client { 
  private $address; 
  public getAddress() { 
    return $this->address; 
  }    
  public setAddress($address) { 
    $this->address = $address;  
  } 
} 
   
class Business extends Client{ 
  //这里可以使用address属性 
} 

// Class Individual 
class Individual extends Client{ 
//这里可以使用address属性 
} 

하지만 동일한 주소 속성에 액세스해야 하는 order라는 다른 클래스가 있는 경우에는 어떻게 되나요? 주문 클래스는 OOP 원칙을 준수하지 않기 때문에 클라이언트 클래스를 상속할 수 없습니다. 이때 특성이 유용합니다. 특성을 정의하여 이러한 공용 속성을 정의할 수 있습니다.

// Trait Address
trait Address{
  private $address;
  public getAddress() {
    eturn $this->address;
  }
  public setAddress($address) {
    $this->address = $address;
  }
}
// Class Business
class Business{
  use Address;
  // 这里可以使用address属性
}
// Class Individual
class Individual{
  use Address;
  //这里可以使用address属性
}
// Class Order
class Order{
  use Address;
  //这里可以使用address属性
}   

이것이 훨씬 더 편리합니다!

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