>백엔드 개발 >PHP 튜토리얼 >간단한 특성 사용 예에 ​​대한 자세한 설명

간단한 특성 사용 예에 ​​대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-03 11:21:561393검색

PHP 5.4의 traits은 새로 도입된 기능인데 중국어로 어떻게 번역해야 할지 정말 모르겠습니다. 실제 목적은 상황에 따라 다중 inheritance을 사용하는 것이지만 PHP에는 상속이 많지 않기 때문에 그런 것이 고안되었습니다.

특성은 다양한 클래스에서 호출할 수 있는 메서드 집합으로 이해될 수 있지만 특성은 클래스가 아닙니다! 인스턴스화할 수 없습니다. 먼저 구문을 살펴보기 위해 예를 들어 보겠습니다.

<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}

}

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

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

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

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

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

하지만 다른 클래스가 있으면 어떻게 될까요? 동일한 주소 속성에 액세스해야 하는 호출된 주문이 있습니까? 주문 클래스는 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 Inpidual
class Inpidual{
  use Address;
  //这里可以使用address属性
}
// Class Order
class Order{
  use Address;
  //这里可以使用address属性
}

이것이 훨씬 더 편리해요!

위 내용은 간단한 특성 사용 예에 ​​대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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