객체와 데이터 구조


객체 및 데이터 구조

1. getter 및 setter 사용 객체 캡슐화 사용

2. 객체에는 비공개 또는 보호된 멤버 변수를 사용하세요

1. getter와 setter를 사용하세요

PHP에서는 메소드에 public, protected, private를 사용하여 객체 속성의 변경 사항을 제어할 수 있습니다.

  1. 객체의 속성을 얻는 것 이외의 작업을 수행하려는 경우 코드에서 각 속성 액세스 방법을 찾아 수정할 필요가 없습니다.

  2. set 해당 속성 메소드가 있는 경우 매개변수 확인 추가가 용이함

  3. 패키지 내부 표현

  4. setgetget을 사용할 때 로깅 및 오류 제어를 쉽게 추가할 수 있습니다.

  5. 현재 클래스를 상속할 때 기본 메서드 함수를 재정의할 수 있습니다.

  6. get*set*원격 서버에서 개체 속성을 가져올 때 지연 로딩을 쉽게 사용할 수 있습니다.

또한 이 접근 방식은 OOP 개발의 열기 및 닫기 원칙을 준수합니다.

나쁜:

으아악

좋아요:

으아악

2. 객체에는 비공개 또는 보호된 멤버 변수를 사용하세요

  • 공용 메서드와 속성을 수정하는 것은 외부 코드에 쉽게 의존할 수 있고 제어할 수 없기 때문에 매우 위험합니다. 이에 대한 수정 사항은 이 클래스의 모든 사용자에게 영향을 미칩니다. 공용 메서드와 속성은 변경에 가장 위험합니다. 왜냐하면 일부 외부 코드는 쉽게 이에 의존할 수 있고 어떤 코드가 이에 의존하는지 제어할 수 없기 때문입니다. 클래스의 수정은 클래스의 모든 사용자에게 위험합니다.

  • protected에 대한 수정은 하위 클래스에서 사용할 수 있기 때문에 public에 대한 수정만큼 위험합니다. 유일한 차이점은 호출 가능한 위치가 다르며 수정하면 이 클래스를 통합하는 모든 위치에 영향을 미친다는 것입니다. protected 수정자는 모든 하위 클래스의 범위에서 사용할 수 있기 때문에 공개만큼 위험합니다. 이는 사실상 공개와 보호의 차이는 액세스 메커니즘에만 있지만 클래스의 수정은 모든 하위 클래스에 대해 동일하게 유지된다는 것을 의미합니다. .

  • 프라이빗 수정은 코드의 이 부분이 현재 클래스에만 영향을 미치도록 보장합니다. 프라이빗 수정자는 코드가 단일 클래스의 경계에서만 수정되는 것이 위험하다는 것을 보장합니다(수정해도 안전하며 Jenga 효과가 없습니다).

따라서 클래스의 코드에 액세스할 수 있는지 여부를 제어해야 하는 경우에만 public/protected,其他时候都用private를 사용하세요.

Fabien Potencier의 이 블로그 게시물을 읽을 수 있습니다.

나쁜:

으아악

좋아요:

으아악