2010-05-06 2 views
1

저는 모델을 만드는 것에 대해이 한 가지를 궁금해했습니다. 예를 들어 페이지 모델을 만들면. 이 둘은 모두 : 테이블 또는 모든 행에서 한 행을 검색 할 수 있습니다. 어떻게 든 개체와 데이터베이스를 혼합합니다.PHP : MVC 및 모델

나는 이것을 다음과 같이 생각했다 : 나는 테이블에서 한 행을 나타내는 페이지 클래스를 만들어야 할 것이다. 또한 모든 기본 CRUD 방법을 사용합니다.

그런 다음 테이블에서 행을 검색하고 각 행에서 페이지 개체를 인스턴스화하는 페이지 클래스 (somekind 컬렉션)를 수행해야합니다. 이런 종류의 이상한가요?

누군가가 나를 통해 모델의 아이디어를 설명 할 수 있다면 .. 다시 혼란스러워.

아마 임

그리고 그런데

이 포럼은 중대하다 .. 너무 어렵 전체 OOP 생각. 바라건대 사람들은 내 문제를 이해할 수 있기를 바랍니다. ㅎ. 저는 오랜 시간 프로 시저 스타일의 프로그래머였습니다. 이제 3 개월 만에 OOP와 MVC 및 PHP 프레임 워크로 뛰어 들었고,이 물건을 탐색 할 때마다 날마다 흥분을 느낍니다!

+0

가능한 복제 http://stackoverflow.com/questions/2770553/trying-to-understand-mvc-models-advice – Gordon

답변

1

두 가지 모두 : 테이블 또는 모든 행에서 행을 검색 할 수 있습니다.

당신이 하나 개 이상의 레코드를 얻는 등 기록, 업데이트, 삽입 예를 들어, 당신이 원하는 무엇이든 할 수에 의해 당신이 데이터베이스와 상호 작용 모델을 사용할 수 있습니다

I을 이동하는 방법 데이터베이스와 상호 작용할 수있는 사이트의 각기 다른 페이지에 대한 모델을 작성하는 것이 좋습니다. 데이터베이스와 상호 작용하기위한 페이지의 요구 사항에 따라 단일 페이지에 대해 단일 모델 내에 다른 기능을 생성하고자 할 수 있습니다.

1

귀하의 모델이 인스턴스를 나타내는 지 아니면 단지 ORM 개체인지에 따라 달라집니다.

모델이 인스턴스를 나타내는 경우 데이터베이스의 각 레코드 (행)는 새 Model 객체가됩니다. "모든 기록"은 단순히 이러한 객체의 배열로 표현됩니다. 예를 들어 Ruby on Rails는 이런 식으로합니다.

모델이 오히려 ORM 개체라면 데이터베이스를 그대로 나타내며 데이터베이스를 통해 데이터베이스에서 레코드를 검색 할 수 있습니다. 결과는 일부 컨테이너 객체 또는 일반 배열에있을 수 있습니다. 예를 들어 CakePHP는이 방법을 사용합니다.

+0

Cake와 RoR은 ActiveRecord를 사용합니다. 행 집합 ('모든 레코드')이 배열이어야하는 이유는 없습니다. Zend_Db_Rowset과 같이 SplObjectStorage 또는 전용 행 집합 클래스가 될 수 있습니다. ORM 객체가 무슨 뜻인지 모르겠지만 QueryObject를 의미하는 것 같습니다. TableData Gateway, RowData Gateway 및 DataMapper도 있습니다. 그리고 모델은 어쨌든 데이터베이스가 아닙니다. – Gordon

+0

@Gordon Cake에서 사용하는 "ActiveRecord"는 실제로 ActiveRecord가 아닙니다. 모델의 인스턴스를 여러 개 가질 수는 없으며 데이터를 제공하거나 데이터를 가져 오는 인스턴스가 하나만 존재합니다. QueryObject 또는 다른 어떤 것이 든 호출하십시오. 모든 가능한 경우를 다루지 않는이 간단한 대답의 나머지 부분을 용서해주십시오. OP의 일반적인 차이점을 설명하려고했습니다. – deceze

+0

나는 내가 기뻐할 때 어디서나'새로운 사용자'를하는 케이크 코드를 작성했다고 확신한다. 아하 잘, 그러나 그 후 어느 정도 시간이 지났습니다. 어쩌면 그들은 그것을 바꿨습니다. :) – Gordon