php 특성은 php와 같은 단일 상속 언어용으로 설계되었습니다. 이는 개발자가 단일 상속으로 인한 제한을 줄이기 위해 다양한 상속 시스템의 여러 클래스 간에 일련의 메서드를 쉽게 공유할 수 있도록 설계되었습니다.
Traits
는 PHP와 같은 단일 상속 언어용으로 설계되었습니다. 이는 개발자가 단일 상속으로 인한 제한을 줄이기 위해 다양한 상속 시스템의 여러 클래스 간에 일련의 메서드를 쉽게 공유할 수 있도록 설계되었습니다. 특성과 클래스의 조합은 다중 상속으로 인해 발생하는 일련의 문제를 방지합니다. Traits
是针对php这样的单继承语言设计的。旨在让开发者很方便的在不同继承体系的多个类之间公用一系列方法,以减少单继承带来的局限性。Traits和class的结合,避免了多继承带来的一些列问题。
使用
首先看下官方文档给出的例子:
<?php trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ } ?>
从上面的例子可以看出,特性集ezcReflectionReturnInfo
包含了两个方法:getReturnType
和getReturnDescription
,而下面的两个子类分别继承自不同的父类,却可以通过use ezcReflectionReturnInfo
공식 문서에 제공된 예제를 먼저 살펴보세요:
<?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; } }위의 예제에서 볼 수 있듯이 기능 세트ezcReflectionReturnInfo
에는 두 가지 메서드가 포함되어 있습니다:getReturnType
및getReturnDescription
. 다음 두 하위 클래스는 서로 다른 상위 클래스에서 상속되지만ezcReflectionReturnInfo 사용
을 통해 이 두 메서드를 재사용할 수 있습니다. 간단하고 편리합니다.
관련 학습 권장 사항: 초보부터 숙련까지 PHP 프로그래밍
Notes
class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } }
class MyClass2 { use HelloWorld { sayHello as private myPrivateHello; } }
<?php trait Hello { public function sayHello() { echo 'Hello '; } } trait World { public function sayWorld() { echo 'World!'; } } trait HelloWorld { use Hello, World; }
위 내용은 PHP 특성의 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!