inflearn logo
강의

講義

知識共有

PHP 7+ プログラミング: オブジェクト指向

38 - ユーザー (User)

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

340

frea

投稿した質問数 1

0

강사님 강의 잘 듣고 있습니다~ ^^*

역시 후반부에 오니 핵심들이 꼭꼭 쌓여있습니다.
앞에서 잘 설명해 주셨던 것들이 잘 조합되어서,
저의 이해도도 많이 높아 졌습니다.

그런데 궁금한게 User 클래스와 같은 Model을 만드실때,
속성을 protected 나 private으로 미리 선언하지 않고
모델의 메서드 내에서 매직메서드 __set() 을 통한 할당을 함으로써,
public 접근이 가능하게 됩니다.

강의에서 말씀하셨듯이 VO나 DTO에 대한 언급을 하지 않는 이유는 이해가 갑니다만,
뷰 등에서 모델의 객체(vo)가 수정되지 않을 것을
보장(immutable)해 주는 것은 중요하지 않습니까?

혹시 별다른 이유가 있는지 궁금해서 질문드립니다.

MVC 아키텍처에서 VO가 중요한 이유는
VO가 변하지 않음을 보장하는 것이라고 생각하거든요~^^

강사님의 다음 라라벨 강의도 기대되네요~ ^^*

oop php immutable vo

回答 1

1

pronist

안녕하세요.

그 이유는 PHP 언어의 느슨함을 이용한 것이라고 볼 수 있습니다. 실제로 라라벨의 모델에서도 데이터 매퍼(Data Mapper)가 아닌 엑티브 레코드(Active Records)을 사용하여 모델에 실제로 명시하지 않고 정의되지 않은 프로퍼티임에도 접근할 수 있는 형태를 띄고있습니다. (물론 해당 프로젝트 한정에서는 모델에 protected 로 프로퍼티를 정의한다고 해서 문제가 되진 않고 더 좋겠지만) 만약 제가 사용하는 또 하나의 언어인 Golang 과 같은 언어였다면 분명하게 구조체(Structure)를 이미 정의하고 가기 때문에 애초에 그것은 안티패턴이라 지향하지 않았겠지만 PHP 를 할 때만큼은 다릅니다.

언어가 가지고 있는 고유 특색이자 어느정도의 느슨함을 적극적으로 활용하고 있는 것이 라라벨이기에 단지 그것을 비슷하게 모방하려고 했을 뿐이죠. 타입에 극히 엄격한 Java 와 같은 언어에서는 상상도 하기 어려운 일이겠지만, 라라벨에서는 __set() 및 __get() 을 사용한 동적 메서드를 파사드(Facades)라는 개념을 통해 적극적으로 사용하고 있기도 합니다.

PHP 가 가지는 이러한 점은 개발자들에게 있어 호불호가 나뉘게 되는 이유가 됩니다. 차후 PHP 9.0 에서는 보다 견고함을 유지하기 위해 이러한 느슨함을 점점 줄일 것이라고는 하고 있으나 라라벨을 비롯한 현재까지의 PHP 언어의 활용현황이 그렇다는 점을 참고해주셨으면 좋겠습니다~

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

0

90

1

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

0

402

1

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

0

335

1

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

0

448

1

라라벨(php) 배포 문의

0

1652

1

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

0

2102

1

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

0

397

1

xdebug 설치

0

668

1

localhost 경로

0

441

1

class not found

1

328

1

namespace class not found 질문

0

466

1

csrfmiddelware 에러 질문입니다

0

363

2

url Parttern Parts 가 무슨뜻인가요?

0

349

1

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

0

248

1

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

0

297

1

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

1

1377

1

DatabaseSessionHandler.php 에러 해결 부분

0

299

1

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

1

281

1

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

1

575

2

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

1

575

2

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

2

259

1

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

0

1135

1

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

1

371

1

User 클래스에 대한 질문입니다.

1

187

1