2010-07-23 4 views
0

PHP에서이 예제를위한 매우 간단한 객체 세트를 사용합니다.PHP 객체 질문

ObjectA :

속성 :

말할 수 있습니다 DescId을;

: getListofData();

ObjectB :

속성 : DescId, DescName;

방법 : getDescNameById();

ObjectA가 루프 내에서 함수를 호출하는 경우 ObjectB에서 DescName을 가져 오는 가장 좋은 방법은 무엇인지 알고 싶습니다.

ObjectB (new)를 인스턴스화하고 ObjectB.getDescNameById 메서드에 ObjectA.DescId를 전달해야한다고 생각합니다. 예를 들어

:

class objectA { 

     function getListOfData(){ 
      $myObjB= new objectB(); 
       while ... 
       { 
        $myObjB->descId = $row["descId"]; 
        $myDescName = $myObjB->getDescNameById(); 
        ... 
        $i++; 
       } 
     } 
} 

본인은 위의 작동 확신하지만 올바른 방법, 또는이 일을 다른 방법이있는 경우에도 있는지 확실하지 않습니다. 이런 유형의 이름이 있습니까? 어떤 사람들은 Lazy Loading을 언급했다. 이것이 PHP에서 무엇입니까?

+0

이러한 개체는 무엇입니까? 샘플 코드가 의도 설명과 일치하지 않습니다. 즉, 샘플 내에 오브젝트 A가 존재하지 않는다. –

+0

@George while 단편은 ObjectA에서 호출됩니다. – webdad3

+0

샘플에 표시하는 것은 매우 중요합니다. 그것은 큰 차이를 만든다. –

답변

2

질문에 약간의 확장이 필요하다는 점에 유의하십시오.

클래스는 제조법입니다. 물체는 그 조리법으로 만든 실제 요리입니다.

그래서 요리법이 어떻게 맛보는지 알아야 할 필요가 있다면 실제로 요리해야합니다.

디자인 타임에는 일반적으로 클래스에 대해 생각하고 있습니다. 나는. 당신이 저녁 식사를 계획 할 때, 당신은 완성 된 요리의 기간이 아니라 조리법의 관점에서, 당신이 봉사하고 싶은 것을 생각합니다. (요리를하기 전까지는 요리가 없습니다.) 즉, 조리법을 실행하기가 어렵다는 점과 위험한 제안을 할 수 있다는 점을 고려해야합니다.

의미가 있습니까?

디자인에 대해 자신에게 물어 몇 가지 질문 : 그들은 같은 이름의 ID를 저장하는 양으로,

당신도 ObjectA가 필요하십니까은? (아마도 그들은 함께 묶여 있습니다.)

두 가지의 차이점은 무엇입니까?

하나의 개체에 결합 할 수 있습니까?

이는 메소드가하는 일과 실제로 ID가 무엇인지에 따라 다릅니다.

+0

공정한만큼 ... 당신이 암시하고있는 것처럼 나는 테이블 구조에이 물체를 아주 가깝게 디자인으로 만들었습니다. 나는 당신이 실제로 데이터가 나오는 곳이 아닌, 그것이 무엇인지에 대한 객체를 디자인 할 것을 제안하고 있다고 생각한다. – webdad3

+0

@Jeff 그렇습니다. 대단히 : '내가 데이터를 가져 오는 위치가 아닌 개체의 디자인을 제안하고 있습니다.' –

1

또한 클래스 b 생성자 중에 필요한 정보를 지정해야합니다.

그래서 :

$myObjB->descId = $row["descId"]; 
$myDescName = $myObjB->getDescNameById(); 

이 될 수 있음 :

$myObjB = new Object_B($row["descId"]); 
$myDescName = $myObjB->get_description(); 

이 같이 B를 유지하는 데 도움이 보통 OO의 목표 중 하나입니다, 가능한 한자가 포함되어 있습니다.