2010-12-10 4 views
6

나는 PHP로 새로운 수업을 만들고있다. 나는이 수업이 연장 될 것으로 기대하지 않는다. 클래스 멤버를 비공개로 만들고 getter 및 setter 함수를 구현하는 데 신경 써야합니까?PHP에서 getters와 setter를 사용해야하나요?

이 부분은 시간 낭비 일 뿐이며 코드를 대량 작성한다고 생각합니다.

클래스는 이력서 용입니다. 코딩 스타일을 보여주기 위해 코드로 작성했습니다. 문제는 고용주가 게터와 세터를보고 싶어하는지 아니면 그냥 혼란스럽게 할 것인가?

+1

수업에 대한 정보를 줄 수 있습니까? – RDL

+0

이력서입니다. 나는 그것을 코드로 작성하고있다. 문제는 고용주가 게터와 세터를보고 싶어하는지 아니면 그냥 혼란스럽게 할 것인가? – james

+1

당신의 질문에 대답하는 방법에 큰 차이가 있습니다; 해당 정보를 추가하려면 질문을 편집하십시오. –

답변

2

내가 너라면 걱정하지 않겠다. 네 말이 맞아, 그 장식이 너의 수업을 혼란스럽게 만들 뿐이야.

1

someting special을 set 또는 get (또는 private 중 하나만 선택) 하시겠습니까?

그렇지 않은 경우 다음에 시간을 낭비하지 마십시오.

그냥 지금까지 내가 이해 & __set을 __get 무시할 수 있습니다 당신은 "특별한 방법"에서 사용하지 않으며 어쩌면 심지어 아래로

+1

미래의 가치에 특별한 것을해야 할 필요가있을 때 얻을 수 있습니다. –

3

향후에 수업을 연장 할 필요가 없다는 것을 결코 알지 못할 수도 있습니다. 수업은 무엇을 할 것인가? 얼마나 복잡한가?

캡슐화는 좋은 OO 설계의 일부입니다. 그러나 좋은 OO 디자인은 프로그래밍의 목표가 아닙니다. 목표는 일을하고 필요할 때 쉽게 수정할 수 있도록하는 것입니다.

0

이러한 속성을 설정하거나 액세스 할 때 특정 동작을 계획하지 않으면 많은 부분을 다루지 않습니다.

나중에 이러한 속성에 액세스하거나 수정할 때 특정 동작이 필요한 경우 __set 및 __get 메서드를 항상 오버로드 할 수 있습니다.

참조 : http://php.net/manual/en/language.oop5.overloading.php

+0

매직 방법이 느립니다. 이것들은 적절한 getter와 setter를위한 대체물이 아닙니다. – Gordon

2

내가 또는 개인 보호 내 클래스의 속성을 다음 getter 및 setter를 사용하려면. 그런 다음 setter에서 코드를 사용하여 속성 값이 허용되는 범위 내에 있는지 확인합니다. 필자는 이러한 접근 방식을 선호하여 허용 된 값이 설정되고 있는지 또는 예외가 발생하는지 항상 확인할 수 있기 때문에 디버깅을 더 쉽게 만듭니다. 또한 속성에있는 값을 중심으로 객체를 전달할 때 다른 것이 더 이상 날려 버리지 않을 것이라는 확신이 생깁니다. 난 당신이 지금 상속을 기대하지 않아도된다는 주장을 반복 다시 한 번하지 않으

6

, 당신은 여전히 ​​미래에 필요할 수 있지만, 그들은 여전히 ​​getter 및 setter 사용에 더 많은 이유가 있습니다 :

  • Getter 및 Setter를 사용하면 속성 유효성 검사를 쉽게 구현할 수 있습니다.
  • 코드는 좋은 코딩 지침을 따르므로 다른 사람들이 쉽게 읽을 수 있습니다. getter와 setter를 사용하지 않는 코드 파일을 보았을 때 나는 그것에 대해 매우 회의적이었고 여러 번 신중하게 읽어야했다.
  • 또한 클래스 별 결정이 아니라 전체 프로젝트에 대한 결정입니다. 필요로하는 수업에 게터와 설정자를 갖고 싶습니까? 일관성이 중요하다고 생각합니다.
  • getter 및 setter 작성을 자동 생성 할 수있는 도구가 있습니다. 코드를 한 번만 작성했지만 여러 번 읽는 것을 기억하십시오.
+0

추가하려면 개인 속성에도 getter 및 setter가 있어야합니다. 내부 코드는 내부 속성을 읽거나 쓰려면 한 지점 만 있어야합니다. – Rafa

4

__get 및 __set 마법 방법을 확인하면 코드를 깨끗하게 유지할 수 있으며 설정하지 않을 경우 게으르지 않아도됩니다. 변수 스코팔.

public function __get($name) 
{ 
    return $this->$name; 
} 

public function __set($name, $value) 
{ 
    $this->$name = $value; 
} 

분명히 자세한 내용은 있지만 액세스자를 처리합니다.

+1

매직 방법이 느립니다. 이것들은 적절한 getter와 setter를위한 대체물이 아닙니다. – Gordon

+0

코드를 읽기 쉽도록 만들고 처리량을 크게 줄이지 않습니다. –

2

이력서의 경우 게터/세터와 같은 세부 정보를 다루는 것처럼 논리에 관해서도 많은 관심을 가질 가능성이 큽니다.

나인 경우 getters/setters가 없어도 공개로 설정되지만 위의 주석이 포함되어 있습니다. "개인 설정을 고려하고 응용 프로그램의 범위에 따라 getters/setter를 사용하는 것을 고려하십시오. 그리고 팀 "

그 방법의 바람직한 코드 스타일 :

  1. 이력서 코드는

  2. 그들은 이해 복잡하지 않다 당신의 단지 게으르고 만드는 모든 아무 이유없이 대중은

  3. 대신 맹목적으로 특정 스타일을 다음, 당신이 결정을 내리기에 특정 응용 프로그램을 고려해 줄 것을 보여준다.
관련 문제