나는에 할당 된 클래스 $ 네비게이션라는 변수를 가지고 ... 내가의 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 (컨트롤러 페이지)에서 새로운 방법을 정의하고 반환하는 것 같아요. 하지만 이제는 말이 안되는 두 가지 질문이 있습니다.
- index.php의 header.php에서 변수에 액세스 할 수없는 이유는 무엇입니까?
- __construct()가 컨트롤러에서 작동하지 않는 이유는 무엇입니까?
어떤 도움이 정말
감사 감사하겠습니다!
같은 모든 방법으로 액세스 할 수 있습니다. Oleg. 하지만 나는 두 번째 해결책을 이해하지 못한다 ... –
글쎄, 그것은 객체 속성에 관한거야. 이'$ data'가 객체의 메소드에 의해서만 사용될 필요가 있다면'$ this-> data'에 의해 그것을 객체 속성과 접근으로 정의하는 것이 좋습니다. 여기, PHP.net 매뉴얼을 읽어보십시오 : http://php.net/manual/en/language.oop5.properties.php –