2010-05-04 3 views
11

doctrine을 사용할 때 나는이 2 개의 단어 : 접근 자와 돌연변이에 비틀 거립니다.접근 자 및 뮤 테이타?

은 doctrine에서만 사용되거나 php에만 해당합니까?

무엇을 의미합니까?

감사합니다.

답변

22

그들은 getters와 setter를위한 멋진 용어입니다.

class MyClass 
{ 
    private $prop; 

    // Accessor (or Getter) 
    public function getProp() 
    { 
     return $this->prop; 
    } 


    // Mutator (or Setter) 
    public function setProp($value) 
    { 
     $this->prop = $value; 
    } 

} 
+4

명확히하기 위해 언어 나 프레임 워크와 상관없이 객체 지향 프로그래밍에서 사용되는 일반적인 용어입니다. – nickf

+1

그래서 getter 및 setter 대신에 접근 자 및 mutator라고 부르는 이유는 무엇입니까? 그것들은 마법 메서드가 아닙니다. 즉, setProp()을 입력했지만 그 중 하나의 메서드를 정의하지 않았다면 자동으로 생성되지 않습니다. –

+1

@fayer 접근 자 및 변경자는 컴퓨터 과학에서 사용되는 좀 더 일반적인 용어입니다. getter and setter는 내가 생각하기에 더 캐주얼 한 방법입니다 ... 어쩌면 속어. 내가 아는 한, 마술처럼 PHP에서 변수를 생성하지는 않을 것입니다 ... 스펙을 볼 필요가 있습니다 ... 확신 할 수 없을 것입니다. – m0s

2

정확하게 이해한다면이 2는 특정 객체 지향 프로그래밍 언어와 관련이 있습니다. 요점은 액세서가 클래스의 비공개 필드에 대한 액세스를 제공하는 메서드 또는 함수이고 비공개 필드를 수정할 수있는 뮤 테이타 메서드입니다. 나는 이것에 대해 글쓰기를 할 수는 있지만, 이것들을 구글에 제안하면 많은 정보를 얻을 수있을 것이다. 캡슐화에 관한 모든 것 < - 그 용어를 찾아 볼 것을 제안합니다.

+0

저는 그것들을 몇 가지 공통된 잘 알려진 목적에 부합하는 정규 기능으로 생각하고 싶습니다. – m0s

0

게터와 설정자와 다른 용어는 아니지만 적어도 Laravel에는 없습니다.

설명서를 인용하면 다음과 같습니다. "접근 자 및 변형자를 사용하면 모델에서 값을 검색하거나 값을 설정할 때 Eloquent 특성을 형식화 할 수 있습니다."

https://laravel.com/docs/master/eloquent-mutators

그래서, 당신은 getter 및 setter는 0의 비율로 데이터를 변경 접근 및 뮤 테이터의 하위 집합 말할 수 있습니다.

테이블에서 원시 필드 "비용"을 얻고 싶다면 getter를 사용합니다. 그 필드를 파운드와 펜스로 표현하고 형식화하고 싶다면 접근자를 사용할 수 있습니다.

내가 갈 수있는 다른 방법이 있지만 그 하나의 옵션입니다.

+0

"0의 변화"를 설명해 주시겠습니까? 감사! –

+0

예. 액세서와 뮤 테이터는 새 값을 저장하거나 반환하기 전에 값을 변경합니다. 세터는 값을 바꾸지 않습니다. 그래서 "0의 요소로"라고 말했을 때 나는 단지 "변화 없음"을 의미했습니다. 방금 값을 추가하지 않았습니다. – Puzbie

관련 문제