inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

PHP 7+ 프로그래밍: 객체지향

06 - 매직 메서드 (Magic Methods)

getter setter 는 private proerty에만 적용되나요?

181

lolola

작성한 질문수 19

0

getter , setter, unset, isset magic method들은 property에 대해서만 작동하는데 private프로퍼티들에만 작동하나요? public으로했을떄 호출이 안되요

php oop

답변 1

0

정상우

안녕하세요 :)

예를 들어 __get() 를 사용 한다고 해보겠습니다. A 클래스에는 public $publicProp 프로퍼티가 있습니다. 자 이제 A 클래스의 인스턴스를 만들고 외부에서 $publicProp 로 접근한다고 했을 때, PHP 는 $publicProp 가 public 이면 __get() 매직 메서드보다 먼저 접근하도록 합니다. 이는 어쩌면 당연한 결과일 수 있습니다. public 은 애초에 외부에서 접근을 허가한 것이기 때문이죠.

반면 private 는 외부에서 접근이 불가합니다. 외부에서는 private 로 선언된 프로퍼티의 존재를 알아서는 안 됩니다. 그래서 $privateProp 라고 외부에서 접근을 한다고 하더라도 우선적으로는 없는 프로퍼티로 간주하여 __get() 으로 접근하도록 처리합니다.

class A
{
    public $publicProp;

    private $privateProp;

    public function __construct()
    {
        $this->publicProp = "Hello, world";
    }

    public function __get($name)
    {
        return $name;
    }
}

$a = new A();

var_dump( $a->publicProp ); // Hello, world
var_dump( $a->privateProp ); // PrivateProp

패케지스트를 하지 않고 섹션7을 수행할수 있나요

0

97

1

나만의 프레임워크 작성 후, 운영환경 배포에 관한 문의 드려요

0

416

1

35강 미들웨어에서 인증 과정을 Auth클래스로 만들면, 어느 디렉토리에 둘까요?

0

351

1

ios환경에서는 어떻게 설치해야 하나요?

0

466

1

라라벨(php) 배포 문의

0

1674

1

왜 http://localhost/ 로 접근하면 public/index.php 가 실행되나요?

0

2123

1

http://localhost:8080/posts/1 접근시 배열 0값 표기 오류

0

409

1

xdebug 설치

0

673

1

localhost 경로

0

444

1

class not found

1

338

1

namespace class not found 질문

0

474

1

csrfmiddelware 에러 질문입니다

0

370

2

url Parttern Parts 가 무슨뜻인가요?

0

356

1

통합 개발환경 (IDE) 관련 문의

0

256

1

Route 클래스 질문이 있습니다!

0

302

1

모델 User 등에서 속성들을 protected 나 private 으로 설정하지 않는 이유가 있습니까?

0

348

1

안녕하세요 프로젝트를 react와 연동하기에 대해서 여쭈고 싶습니다 :)

1

1388

1

DatabaseSessionHandler.php 에러 해결 부분

0

305

1

안녕하세요. 라우터 서버 연결 질문이 있습니다.

1

288

1

아니 강사님 왜 자꾸 어어 거려요? 진짜 겁나 거슬려 죽겠네 ㅡㅡ 어좀 적당히해요 거슬려 죽겠네 그리고 마이크 좀 좋은거 쓰세요 볼륨이 낮아졌다 커졌ㄷ ㅏ하고 발음도 다뭉개져지고 딕션도 안 좋아서 하나도 안들려요 진짜 개짜증나네

1

585

2

로컬환경에서 개발 후 운영환경으로 배포 시 발생하는 이슈에 대한 문의입니다.

1

588

2

DatabaseSessionHandler 클래스의 gc($maxlifetime) 메소드에 대해 질문드립니다.

2

265

1

Xdebug 설치 후 php index.php 실행하면 오류가 납니다..!

0

1142

1

CentOS 7.* 서버쪽으로 배포를 해보던 중에 질문드립니다.

1

381

1