2013-02-11 1 views
0

질문이 있습니다. 필자는 내 웹 사이트에 mvc'ish 구조를 만들었습니다. 내 변수를 할당하지 않고 내 뷰에서 사용할 수 있기를 원합니다. 변수를 지정하지 않고 뷰 내부에서 변수를 사용하는 방법

날 예에 의해 설명하자, 여기에 작은 내 컨트롤러의 일부 : 내보기 클래스의 setTemplate() 함수에서

class members extends controller{ 

public function _construct() 
{ 
    parent::__construct();   

} 
public function index() 
{ 
    $test = 'test variable'; 
    $data['test2'] = 'test variable 2'; 

    view::setTemplate('header'); 
    view::setTemplate('homepage', $data); 
    view::setTemplate('footer'); 
} 
} 

, 나는 extract($data)을 사용하고 내가보기 파일을 포함한다. 이렇게하면 $ test2를 에코하여 예상대로 '테스트 변수 2'를 출력으로 가져올 수 있습니다.

그러나 뷰에 setTemplate 함수에 추가하지 않고 처음 $ test 변수를 '기억'하게 만들 수있는 방법이 있습니까?

+0

여기에 묻는 질문은 다음과 같습니다. 왜? 명시 적이며 자체 문서화 된 코드를 작성하는 것이 유지 관리의 최우선 과제라는 것을 기억하십시오. –

+0

'$ this-> test = '테스트 변수';'이것은 객체의 속성이됩니다. –

+0

'extract()'는 최악의 PHP 함수 중 하나입니다. 코드를 디버깅해야하는 미래의 개발자의 삶을 만들어 주셔서 감사합니다. – AlienWebguy

답변

0

면책 조항 :이 코드는 당신은 setTemplate 방법 내에서 변수를 정의하는 변수 변수를 사용하고 거기에서 직접보기를 포함 할 수

을 테스트되지 않았습니다.

<?php 
function setTemplate($view, $data) { 
    if(is_array($data)){ 
    foreach($data as $var => $val){ 
     $$var = $val; 
    } 
    } 
    include('views/'.$view.'.php'); 
} 
?> 
관련 문제