2012-01-09 3 views
3

코드 이그니 터의 일부를 테스트하고 있는데 코드 점화 기가 사용자가 모델 생성자에서 매개 변수를 설정할 수있는 방법을 제공하지 않는다는 것을 알아 냈습니다. 그럼 조금 돌아 다녔고 누군가 모델에서 생성자를 갖는 것이 실제로 쓸모가 없다는 것을 알았습니다. 왜 그런가요?모델에 매개 변수를 사용해야합니까, 사용하지 않아야합니까?

내가 좋아하는 일을하고 싶어요 : 모델과 같은

$user = new User(123); // 123 = id 
$user->getName(); 

또는 무언가를. 하지만 이제는 생성자를 사용해서는 안된다는 것이 판명되었습니다.

모델 클래스에 매개 변수를 사용해야하는 이유는 무엇입니까?

답변

2

나는 코드 이그니 터에 대해 아무것도 몰라서 모자를 던지고 있지만 대부분의 모델은 일반적으로 생성자가 적은 패턴을 특징으로하는 이유를 알고 있습니다.

이유는 serialization 및 deserialization입니다. 많은 언어 (예 : Vb.net 및 C#)에서는 생성자 사용 가능 클래스를 기반으로 직렬화를 허용하지 않습니다. 왜냐하면 직렬화 된 클래스를 비 직렬화 할 때 생성자를 통과해야하는데, 이는 일반적인 코드 경로의 일부가 아니기 때문에 직렬화 해제 프로세스에서는 불가능합니다.

내 생각에 코드 이그니 터 (Code Ignitor)에서도 똑같은 일이 발생합니다. PHP에서 마법 웨이크 업이 있더라도 유사한 목적으로 생성자를 제거하기로 결정했습니다.

나는 그것이 맞는 것 같지 않니?

+0

죄송합니다. 직렬화 란 무엇입니까? 나는 그것에 대해 아무것도 듣지 못했습니다. – Shoe

+0

직렬화는 객체 또는 배열과 같은 덜 복잡한 데이터를 문자 스트링 또는 객체/배열 또는 기타 자원으로 역 직렬화 할 수있는 2 진 스트링으로 변환하는 프로세스입니다. –

+0

PHP에서는 PHP 데이터 (객체, 배열 및 스칼라 데이터) 만 직렬화 할 수 있습니다. 리소스는 특정 확장에 문맥 적이므로 직렬화 할 수 없습니다. –

관련 문제