PHP의 Trait에 대한 자세한 설명 및 적용
1. 상속 VS 다형성 VS 특성
이제 Publish.php와 Answer.php라는 두 가지 클래스가 있습니다. LOG 기능을 추가하려면 클래스 내부의 작업을 기록하세요. 여러 가지 옵션이 있습니다:
상속 다형성 특성 1.1. 상속
그림에 표시된 대로:
코드 구조는 다음과 같습니다.
// Log.php
실제로 해당 상속을 볼 수 있습니다. 요구 사항을 충족합니다. 그러나 이는 객체지향 원칙에 위배됩니다. 게시, 답변 및 로그와 같은 작업 간의 관계는 하위 클래스와 상위 클래스 간의 관계가 아닙니다. 따라서 이런 방식으로 사용하는 것은 권장되지 않습니다.
1.2. 그림과 같은 다형성
:
구현 코드:
// Log.php
로깅 작업이 동일해야 하므로 게시 및 답변(답변) 액션의 로깅 구현도 동일합니다. 분명히 이는 DRY(Don't Repeat Yourself) 원칙에 위배됩니다. 따라서 이 방식으로 구현하는 것은 권장되지 않습니다.
1.3. Trait
그림과 같습니다.
구현 코드는 다음과 같습니다.
// Log.php endLog(); // Answer.php startLog(); );
그 결과 코드의 복잡성을 증가시키지 않고 코드 재사용을 달성한 것을 볼 수 있습니다.
1.4. 결론
상속 방법도 문제를 해결할 수 있지만 그 아이디어는 객체 지향 원칙에 어긋나고 매우 조잡해 보이지만 다형성 방법도 가능하지만 소프트웨어 개발과 DRY 원칙을 준수하지 않습니다. 유지관리 비용이 증가합니다. 특성 메소드는 위의 단점을 피하고 비교적 우아하게 코드 재사용을 달성합니다.
2. Trait의 범위
Trait의 이점을 이해한 후에는 Trait의 구현 규칙도 먼저 이해해야 합니다. 구현 코드는 다음과 같습니다.
protectF(); this-> privateF(); } } $publish = new Publish(); $publish->doPublish();
위 코드를 실행하면 출력 결과는 다음과 같습니다.
public 함수 보호 함수 private 함수
Trait의 범위는 Trait 클래스에 대한 참조가 내부적으로 표시되어 있음을 알 수 있습니다. use 키워드는 Trait을 참조하는 클래스에 Trait의 구현 코드를 복사하는 것으로 이해될 수 있습니다.
3. Trait의 속성 우선순위
우선순위에 대해 말하자면, 여기서 참조 개체는 Trait 클래스와 해당 상위 클래스를 참조합니다.
Trait 애플리케이션에서 속성의 우선순위를 증명하려면 다음 코드를 사용하세요.
protectF(); 게시 = new Publish(); $publish->doPublish();
위 코드의 출력은 다음과 같습니다.
Publish::publicF public function Log::protectF protected function
위의 예를 통해 Trait 애플리케이션의 우선순위는 다음과 같습니다.
현재 클래스의 멤버가 Trait의 메서드를 재정의합니다. Trait이 상속된 메서드를 재정의합니다.
클래스 멤버의 우선 순위는 다음과 같습니다. 현재 클래스>Trait>상위 클래스
4.
키워드는 다음과 같이 클래스의 여러 특성을 참조할 수 있습니다.
startLog(); $this->parameterCheck($para); $this->endLog() } }
위 방법을 통해 클래스에서 여러 특성을 참조할 수 있습니다. 여러 개의 Trait을 참조할 때 문제가 발생하기 쉽습니다. 가장 일반적인 문제는 두 개의 Trait에 동일한 이름을 가진 속성이나 메소드가 있는 경우 어떻게 해야 합니까? 이때 대신of 및 as 키워드를 사용해야 합니다. 다음 구현 코드:
parameterCheck('params'); $this ->csl(); } } $publish = new Publish(); $publish->doPublish();
위 코드를 실행하면 출력 결과는 다음과 같습니다.
Log::startLog 공개 함수 Check::parameterCheck 매개변수 checkparams Check::startLog 공개 함수
문자 그대로의 의미와 마찬가지로 대신 키워드는 후자를 전자로 바꾸고, as 키워드는 대체된 메서드에 별칭을 제공합니다.
Trait를 참조할 때는 use 키워드를 사용하며, 네임스페이스를 참조할 때도 use 키워드를 사용합니다. 둘의 차이점은 Trait을 참조할 때 클래스 내부에서 사용된다는 점입니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

AI는 작곡가 사용을 최적화하는 데 도움이 될 수 있습니다. 특정 방법에는 다음이 포함됩니다. 1. 종속성 관리 최적화 : AI는 종속성을 분석하고 최상의 버전 조합을 권장하며 충돌을 줄입니다. 2. 자동화 된 코드 생성 : AI는 모범 사례를 준수하는 composer.json 파일을 생성합니다. 3. 코드 품질 향상 : AI는 잠재적 인 문제를 감지하고 최적화 제안을 제공하며 코드 품질을 향상시킵니다. 이러한 방법은 기계 학습 및 자연어 처리 기술을 통해 구현되어 개발자가 효율성과 코드 품질을 향상시킬 수 있도록 도와줍니다.

session_start () iscrucialinphpformanagingUsersessions.1) itiniteSanewsessionifnoneexists, 2) ResumesAnxistessions, and3) setSasessionCookieForContInuityAcrosrequests, enablingplicationsirecationSerauthenticationAndpersonalizestContent.

MySQL 기능은 데이터 처리 및 계산에 사용될 수 있습니다. 1. 기본 사용에는 문자열 처리, 날짜 계산 및 수학 연산이 포함됩니다. 2. 고급 사용에는 복잡한 작업을 구현하기 위해 여러 기능을 결합하는 것이 포함됩니다. 3. 성능 최적화를 위해서는 WHERE 절에서 기능 사용 및 GroupBy 및 임시 테이블 사용을 피해야합니다.

HTML5는 5 가지 주요 개선 사항을 제공합니다. 1. 시맨틱 태그는 코드 선명도 및 SEO 효과를 향상시킵니다. 2. 멀티미디어 지원은 비디오 및 오디오 임베딩을 단순화합니다. 3. 형태 향상은 검증을 단순화한다. 4. 오프라인 및 로컬 스토리지는 사용자 경험을 향상시킵니다. 5. 캔버스 및 그래픽 기능은 웹 페이지의 시각화를 향상시킵니다.

Composer는 PHP의 종속성 관리 도구이며 Composer.json 파일을 통해 프로젝트 종속성을 관리합니다. 1) 종속성 정보를 얻기 위해 Composer.json을 구문 분석합니다. 2) 종속성 트리를 형성하기위한 종속성; 3) Packagist에서 공급 업체 디렉토리로 종속성을 다운로드하여 설치합니다. 4) Composer.Lock 파일을 생성하여 팀 일관성 및 프로젝트 유지 관리 가능성을 보장하기 위해 종속성 버전을 잠그십시오.

Typetraits는 컴파일 타임 유형 확인 및 작동에 C에서 사용되어 코드 유연성 및 유형 안전성을 향상시킵니다. 1) 유형 판단은 STD :: IS_INTEGRAL 및 STD :: IS_FLOATING_POINT를 통해 수행되므로 효율적인 유형 확인 및 출력을 달성합니다. 2) std :: is_trivicial_copyable을 사용하여 벡터 복사를 최적화하고 유형에 따라 다른 사본 전략을 선택하십시오. 3) 컴파일 타임 의사 결정, 유형 안전, 성능 최적화 및 코드 복잡성에주의하십시오. 타이피트 라이트를 합리적으로 사용하면 코드 품질을 크게 향상시킬 수 있습니다.

MySQL에서 문자 세트 및 콜라주를 구성하는 방법은 다음과 같습니다. 1. 서버 수준에서 문자 세트 및 콜라주 설정 : setNames'Utf8 '; setcharactersetutf8; setCollation_connection = 'utf8_general_ci'; 2. 특정 문자 세트 및 콜라주를 사용하는 데이터베이스를 만듭니다. createAbaseexample_DBCHARACTERSETUTF8COLLATEUTF8_GENERAL_CI; 3. 테이블을 만들 때 문자 세트 및 콜라주를 지정하십시오 : CreateTableAmplipt_table (idint