2011-03-01 17 views
0

我在PHP對象的一個​​問題。問題有了對象在PHP

http://codepad.org/HdqCVJlw

<?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(); 
    } 
} 

有三類:LoaderControllerFoo。我想在Foo類中使用Class Loader的方法。我知道,__construct()將無法​​運行,因爲從Foo延伸Controller,但無論如何我沒有得到任何錯誤。

因此,如何有使用方法與條件,在Foo我不需要編寫更多的代碼?

P.S.我正在創建MVC ...

+0

我不明白你的問題。你的代碼在這裏工作... – Rodolphe 2011-03-01 13:05:56

+0

*(旁註)*問問你自己,如果你的控制器真的是一個專門的裝載機。如果答案爲否,那麼控制器不應該繼承Loader。如果Controller僅使用* Loader,那麼您應該贊成Composition/Aggregation over Inheritance。 – Gordon 2011-03-01 13:17:10

回答

4

我知道__construct()不會運行,因爲Foo從控制器擴展,但無論如何我沒有得到任何錯誤。

當實例FooController__construct()運行。

例外情況是,如果您在Foo範圍內撥打__construct(),並忘記撥打parent::__construct()

The code you posted works fine

+0

哈,哈。謝謝。愚蠢的是忘了叫那個班...... xD – daGrevis 2011-03-01 13:08:22