PHPは

2012-02-07 4 views
-1

(PHP MVC)公共page.php(例コントローラーページ)で$この経由でインスタンスの新しいクラスがhttp://page/view/PHPは

class page extends fwcontroller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 

    } 

    public function view() 
    {  
     $this->load->library("uri"); #DOESN'T WORK 
     var_dump($this->load->library("uri")); #DOESN'T WORK 
    } 
} 

fwcontroller.php(コントローラフック、(として開くことができませんそれは、私が別のフォルダに移動するwan't!)

class fwcontroller extends core 
{ 
    public $load; 

    public function __construct() 
    { 
     $this->load = new loader; 

     var_dump($this->load->library("uri")); #OK 

    } 
} 

loader.php(ローダライブラリ、(それは/fw/loader.php上だ))/fw/fwcontroller.php上だ、私は「ワン移動する別のフォルダに!)

class function loader 
{ 
    public function library($url) 
    { 
     return $url; 
    } 
} 

私は$this->load->library("uri")経由ページコントローラのインスタンスをロードし、それを返すwan'tは「OK」です。しかし、 "$ this-> loader = new loader"のように動作しますが、fwcontroller.phpにないpage.phpでのみ動作します。

答えて

0

最初に:エラー報告を有効にしてください。構文が途切れています。

public function page extends fwcontroller 

は次のようになります。

class page extends fwcontroller 

そして

public fwcontroller extends core 

は次のようになります。

class fwcontroller extends core 

そして

public function loader 

は次のようになります。

public function __construct(loader $loader) // or even better create a interface 
{ 
    $this->load = $loader; // dependency injection is always better for among other thing testability 

    var_dump($this->load->library("uri")); #OK 

} 

EDIT

をどのようにページクラスのインスタンスを作成します:

class loader 

もう一つ、それはやって良いですか?

私の推測では、$instance = new page;のようになります。$instance = new page();it just worksです。

+0

申し訳ありませんが、それは私の先端です。それはクラスです。 OK –

+0

'class function loader'? –

+0

@JonathanKuhnどこに? ;)OKはその1つを逃しました:) – PeeHaa

0
class /* NOT public function */ page extends fwcontroller 
{ 
    public function __construct() { 
     parent::__construct(); 
    } 

    public function view() 
    {  
     $this->load->library("uri"); // should work now 
     var_dump($this->load->library("uri")); // should work now 
    } 
} 

(他のミスタイプを修正してください!)オートローディング機能(+依存性注入:P)と

そして使用の名前空間。

+0

これらのクラスでは、私はpublicとして$ loadを設定していますが、public $ fwcontrollerのcore(別のフォルダ)にのみ "$ this-> load-> library(" uri "); –