이번에는 코드 재사용을 위해 Traits를 사용하는 단계에 대해 자세히 설명하겠습니다. 코드 재사용을 위해 Traits를 사용할 때 주의사항은 무엇인가요?
PHP 버전 5.4.0부터 PHP는 Trait이라는 새로운 코드 재사용 개념을 제공합니다. Trait은 말 그대로 "특성"과 "특성"을 의미합니다. Trait 키워드를 사용하면 PHP의 클래스에 새로운 특성을 추가할 수 있다는 것을 이해할 수 있습니다.
객체 지향에 익숙한 사람이라면 소프트웨어 개발에서 일반적으로 사용되는 두 가지 코드 재사용 방법, 즉 상속과 다형성이 있다는 것을 알고 있습니다. PHP에서는 단일 상속만 가능합니다. 특성은 이것을 방지합니다. 다음은 간단한 예를 통해 비교 설명합니다.
1. 상속 VS 다형성 VS 특성
이제 Publish.php와 Answer.php라는 두 가지 클래스가 있습니다. LOG 기능을 추가하려면 클래스 내부의 작업을 기록하세요. 여러 가지 옵션이 있습니다:
상속
Trait
1.1 코드 구조는 다음과 같습니다:
// Log.php<?phpClass Log{ publicfunctionstartLog() { // echo ... } publicfunctionendLog() { // echo ... }} // Publish.php<?phpClass PublishextendsLog{} // Answer.php<?phpClass AnswerextendsLog{}
// Log.php<?phpInterface Log{ publicfunctionstartLog(); publicfunctionendLog();} // Publish.php<?phpClass PublishimplementsLog{ publicfunctionstartLog() { // TODO: Implement startLog() method. } publicfunctionendLog() { // TODO: Implement endLog() method. }} // Answer.php<?phpClass AnswerimplementsLog{ publicfunctionstartLog() { // TODO: Implement startLog() method. } publicfunctionendLog() { // TODO: Implement endLog() method. }}
1.3.Trait
구현 코드는 다음과 같습니다.
// Log.php<?phptrait Log{ publicfunctionstartLog() { // echo .. } publicfunctionendLog() { // echo .. }}
// Publish.php<?phpclassPublish { useLog;}$publish=newPublish();$publish->startLog();$publish->endLog();
// Answer.php<?phpclassAnswer { useLog;}$answer=newAnswer();$answer->startLog();$answer->endLog();
1.4.결론
2. Trait의 범위
Trait의 이점을 이해한 후에는 Trait의 구현 규칙도 먼저 이해해야 합니다. 구현 코드는 다음과 같습니다.
<?phpclassPublish { useLog; publicfunctiondoPublish() { $this->publicF(); $this->protectF(); $this->privateF(); }} $publish=newPublish();$publish->doPublish(); publicfunctionprotectedfunctionprivatefunction
Trait 클래스의
reference에서 Trait의 범위를 확인할 수 있습니다. use 키워드는 Trait을 참조하는 클래스에 Trait의 구현 코드를 복사하는 것으로 이해될 수 있습니다.
3. |
우선순위에 대해 말하자면, 여기서 참조 개체는 Trait 클래스와 해당 상위 클래스를 참조합니다. 다음 코드는 Trait 애플리케이션에서 속성의 우선순위를 증명하는 데 사용됩니다.<?phptrait Log{ publicfunctionpublicF()
{ echoMETHOD.' public function'. PHP_EOL; } protectedfunctionprotectF()
{ echoMETHOD.' protected function'. PHP_EOL; }}classQuestion{ publicfunctionpublicF()
{ echoMETHOD.' public function'. PHP_EOL; } protectedfunctionprotectF()
{ echoMETHOD.' protected function'. PHP_EOL; }}classPublishextendsQuestion{ useLog; publicfunctionpublicF()
{ echoMETHOD.' public function'. PHP_EOL; } publicfunctiondoPublish() { $this->publicF(); $this->protectF(); }}
$publish=newPublish();$publish->doPublish();
上述代码的输出结果如下:
Publish::publicFpublicfunctionLog::protectFprotectedfunction
현재 클래스의 멤버가 특성의 메서드를 재정의합니다.
문자 그대로의 의미와 마찬가지로 대신 키워드는 후자를 전자로 대체하고 as 키워드는 대체된 메서드에 별칭을 제공합니다.
네임스페이스
를 참조하는 데에도 사용됩니다. 둘의 차이점은 Trait을 참조할 때 클래스 내부에서 사용된다는 점입니다.
이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
위 내용은 코드 재사용 특성 사용 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!