2011-01-18 3 views
4

객체 지향 PHP를 사용할 때 HTML을 어디에 렌더링해야합니까?객체 지향 PHP 디자인에서 HTML을 어디에서 렌더링해야합니까?

비즈니스 프로세스에는 고객 레코드를 유지 관리하는 몇 가지 조치가 포함됩니다.
각 비즈니스 프로세스의 렌더링이 별도의 PHP 파일을 가져야합니까? 즉. viewCustomerTransactions.php?

여기 코드는 어디에 있어야합니까?

$custTrans = Customer.getTransactions(); 

foreach ($custTrans as $ct){ 
    $amount = $ct[0]; 
    $date = $ct[1]; 
    $product = $ct[2]; 

    echo '<div class="custTrans">'; 
     echo '<span class="custTransAmount">'.$amount.'</span>'; 
     echo '<span class="custTransDate">'.$date.'</span>'; 
     echo '<span class="custTransproduct">'.$product.'</span>'; 
    echo '</div>'; 
} 

아마도 codeigniter와 같은 MVC 프레임 워크가 더 좋을까요?

$custTrans = Customer.getTransactions(); 

$html = ""; 
foreach ($custTrans as $ct){ 
    $amount = $ct[0]; 
    $date = $ct[1]; 
    $product = $ct[2]; 

    $html .= "<div class="custTrans">"; 
     $html .= "<span class='custTransAmount'>".$amount."</span>"; 
     $html .= "<span class='custTransDate'>".$date."</span>"; 
     $html .= "<span class='custTransproduct'>".$product."</span>"; 
    $html .= "</div>"; 
} 

당신은 다음 변수 $ html로 저장이 HTML 데이터를 가지고 당신은 그것을 어디 에코 수 있습니다 내가 당신이라면

+3

가능한 중복 : http://stackoverflow.com/questions/316509/where PHP 코드 예제 –

+2

예제가 OO PHP와 아무런 관련이 없습니다. 배열을 통과하고 배열과 에코 결과를 보거나, MVC가 렌더링과 데이터를 잘 구분할 수 있습니다. 개인적으로 CI – bensiu

+0

+1을 MVC 용으로 사랑합니다. 그리고 저는 CI를 좋아합니다. – polarblau

답변

4

난 아직도 너무 많은 잔털없이 PHP와 레이아웃 별도을 유지하는 가장 좋은 방법은 무엇 파악하고있다. 지금은 include-templating 접근 방식을 정말 좋아합니다. 너무 간단하고 아무런 제약이 없습니다.

따라서, 귀하의 예를 들어, 다음과 같습니다 PHP 파일 (example.php) 것 :

<?php 
$custTrans = Customer.getTransactions(); 

$displ_transactions = array(); 

foreach ($custTrans as $ct){ 
    $transaction = array(
     'amount' => $ct[0], 
     'date' => $ct[1]; 
     'product' => $ct[2]; 
    ); 
    $displ_transactions[] = $transaction; // this will push the transacion into the array 
} 
include 'example.tpl.php' 
?> 

을 그리고 당신은 (example.tpl.php) 두 번째 파일이 필요합니다

<?php foreach ($displ_transactions as $transaction) { ?> 
    <div class="custTrans"> 
     <span class='custTransAmount'><?php echo $transaction['amount'] ?></span>; 
     <span class='custTransDate'><?php echo $transaction['date'] ?></span>; 
     <span class='custTransproduct'><?php echo $transaction['product'] ?></span>; 
    </div> 
<?php } ?> 

브라우저에서 example.php를 호출하기 만하면 이전과 같은 결과가 나타납니다. 이 방법으로 인해 약간의 오버 헤드가 발생하기 때문에 작은 웹 사이트에서는이 방법이 유용합니다. 템플리트 작성에 대해 진지하게 생각한다면 현명하게 사용하십시오. 배우기 쉽고 자동 캐싱이 있으므로 초고속입니다.

난 그냥 당신이 또한이 방법을 수행 할 수 있습니다 실현 :

example.php :

<?php 
$custTrans = Customer.getTransactions(); 

foreach ($custTrans as $ct){ 
    $amount = $ct[0]; 
    $date = $ct[1]; 
    $product = $ct[2]; 
    include 'example.tpl.php'; 
} 
?> 

example.tpl.php :

<div class="custTrans"> 
    <span class='custTransAmount'><?php echo $amount ?></span>; 
    <span class='custTransDate'><?php echo $date ?></span>; 
    <span class='custTransproduct'><?php echo $product ?></span>; 
</div> 

를 사용하여 가장 잘 맞는 어떤 :)

+0

답변으로 받아 들일 것입니다 - 또한 http://stackoverflow.com/questions/316509/where-can-i-learn-find-examples-에 대한 훌륭한 답을 예리한 조언을 위해 @Christian Joudrey에게 +1하십시오. of-mvc-for-php – jpwco

1

나는과 같이 그것을 밖으로 반향 대신 변수에 HTML을 저장하는 것 이제까지 너는 좋아한다.

echo $html; 

문제가있는 친구를 해결할 수 있습니까?

W.

+0

그게 좋은 생각인데. 고마워. 그러나, 나는 _right_ 장소에 대해 디자인 관점에서 그것을 에코하기 위해 더 많은 것을 요구했고, 그것을 모두 하나의 $ html로 연결하는 방법에 관해서는 더 적었다. 환호 – jpwco

0

내가 포함 템플릿 (Jules Colle에 의해 언급 됨)이 t 그럼에도 불구하고 프로젝트가 너무 커지면 유지 관리가 지저분해질 수 있으므로이 파일 유형에 대한 (현재) IDE 솔루션이 없으므로 어떤 파일이 어떤 파일에 포함되는지 문서화해야합니다. 하나의 파일에서 다른 파일로 쉽게 이동하거나 모든 것을 절차 적 코드로 쉽게 배치 할 수있는 솔루션.

편집 : 가 잊지 마세요 마법 상수 : http://www.php.net/manual/en/language.constants.predefined.php

이 : $ _SERVER [ 'DOCUMENT_ROOT']