2015-01-20 4 views
0

나는에 할당 된 클래스 $ 네비게이션라는 변수를 가지고 ... 내가의 index.php에 변수 $ 탐색에 액세스 할 때 $navigation = $this->nav_class = new \navigation_menu\Navigation();왜 내 header.php에서 변수에 액세스 할 수 없습니까? 내 header.php에서

, 그것은 정의되지 않은 변수 "$ 탐색"라는 오류가 발생합니다

하지만 index.php에서 직접 인스턴스화하면 작동합니다.

나는 컨트롤러 페이지에서 메소드 이름을 통해 "인덱스"는 $ 네비게이션 변수를 전달하는 시도하고 ... 잘 잘 작동

public function index() 


{ 

     $data['title'] = "Welcome"; 

     $data['navigation'] = new \navigation_menu\Navigation(); 


     $this->load->view('public/includes/header.php', $data); 
     $this->load->view('index', $data); 
     $this->load->view('public/includes/footer.php'); 
} 

작동합니다. 그러나 문제는 여러 가지 방법으로 클래스를 사용해야 할 때입니다. 모든 메서드에 대해 새 객체를 인스턴스화하고 싶지 않습니다.

그래서 다음 작업은 __construct()로 이어집니다. 그러나 내가 구조를 만들었을 때 나는이 메시지를 받는다 ..

Severity: Notice 

Message: Undefined property: PublicPage::$load 

Filename: controllers/PublicPage.php 

Sooo. 나는 여기에 내가 잘 작동

private function navigation(){ 
     return $nav = new \navigation_menu\Navigation(); 
    } 


    public function index() 
    { 

     $data['title'] = "Welcome"; 

     $data['navigation'] = $this->navigation(); 
     $this->load->view('public/includes/header.php', $data); 
     $this->load->view('index', $data); 
     $this->load->view('public/includes/footer.php'); 

    } 

을 한 일입니다 ... 내 유일한 옵션은 클래스를 탐색이라는 PublicPage.php (컨트롤러 페이지)에서 새로운 방법을 정의하고 반환하는 것 같아요. 하지만 이제는 말이 안되는 두 가지 질문이 있습니다.

  1. index.php의 header.php에서 변수에 액세스 할 수없는 이유는 무엇입니까?
  2. __construct()가 컨트롤러에서 작동하지 않는 이유는 무엇입니까?

어떤 도움이 정말

감사 감사하겠습니다!

답변

0

$data 변수를 사용하고 있지만 범위를 벗어났습니다.
하나의 솔루션은 세계에로 정의하는 것입니다 :

global $data; 

... 의 시작 부분에 사용하거나 필요한 모든 방법.
더 이상 코드를 변경할 필요가 없으며 상자에서 정상적으로 작동합니다. 당신 만이 클래스/객체를 사용하는 경우

다른 솔루션은 , 클래스/객체 속성으로 가진 것, 같이 (왜 외부 그렇지 않으면 저장?) :

public $data; 

$this->data 
+0

같은 모든 방법으로 액세스 할 수 있습니다. Oleg. 하지만 나는 두 번째 해결책을 이해하지 못한다 ... –

+0

글쎄, 그것은 객체 속성에 관한거야. 이'$ data'가 객체의 메소드에 의해서만 사용될 필요가 있다면'$ this-> data'에 의해 그것을 객체 속성과 접근으로 정의하는 것이 좋습니다. 여기, PHP.net 매뉴얼을 읽어보십시오 : http://php.net/manual/en/language.oop5.properties.php –

관련 문제