2011-03-01 6 views
0

PHP의 객체에 문제가 있습니다. Loader, ControllerFoo : PHP의 객체와 관련된 문제

<?php 
error_reporting(E_ALL | E_STRICT); 
## 
class Loader { 
    function view() { 
     echo 'I did it!)'; 
    } 
} 
class Controller { 
    public $loader; 
    function __construct() { 
     $this -> loader = new Loader; 
    } 
} 

## 
class Foo extends Controller { 
    function index() { 
     $this -> loader -> view(); 
    } 
} 

http://codepad.org/HdqCVJlw

은 세 가지 클래스가 있습니다. Foo 클래스에 클래스 로더의 메소드를 사용하고 싶습니다. 은 에서 Controller으로 확장 되었기 때문에 실행되지 않을 것입니다. 그러나 어쨌든 오류는 발생하지 않습니다.

그런 식으로 그 방법을 사용하는 방법은 Foo에 더 많은 코드를 작성할 필요가 없습니까?

P. 나는 푸 컨트롤러에서 확장 때문에 __construct()이 실행되지 않을 것이라는 점을 알고

+0

귀하의 문제를 이해하지 못합니다. 귀하의 코드는 여기에서 작동합니다 ... – Rodolphe

+0

* (sidenote) * 컨트롤러가 실제로 특수화 된 로더인지 스스로에게 문의하십시오. 그 대답이 No이면 Controller는 Loader에서 상속하지 않아야합니다. Controller가 Loader를 사용한다면, 상속에 대해 Composition/Aggregation을 선호해야합니다. – Gordon

답변

4

... MVC를 만드는거야,하지만 어쨌든 나는 어떤 오류가 발생하지 않습니다.

Foo를 인스턴스화, Controller__construct() 실행됩니다.

__construct()Foo으로하고 예외적으로 parent::__construct()으로 전화하는 것을 잊지 마십시오.

The code you posted works fine.

+0

하, 하. 감사. 그 수업을 부르는 것을 잊어 버리는 것은 어리석은 ... xD – daGrevis