2013-02-28 84 views
0

我有3個類(Mysqliconn,用戶和新聞)。另一個類的PHP調用類方法

Mysqliconn.class

Class Mysqliconn { 
..connect to db 
} 

News.class

class News { 
private $db; 

    public function __construct(Mysqliconn $db) { 

    $this->db = $db; 
    } 

    public test() { 
    do something... 
    } 
} 

Users.class

class Users { 
private $db; 

    public function __construct(Mysqliconn $db) { 

    $this->db = $db; 
    } 

    public test2() { 

    do something... 
    } 
} 

在我的PHP頁面

$db = new Mysqliconn(); 
$nw = new News($db); 
$us = new Users($db) 

$us->test2(); 
$nw->test(); 

我的錯誤

Catchable fatal error: Argument 1 
passed to Users::__construct() must be an instance of Mysqliconn, 
none given, called in ....\class\class.news.php 

現在在我班上的用戶,我想打電話給一個新聞類的方法, 但我得到一個錯誤,如果我嘗試istantiate類新聞類用戶中。

我該怎麼做? 謝謝。

+2

什麼錯誤?類不存在?你是否包含類文件? – 2013-02-28 13:07:46

+3

爲什麼你不在'User'構造函數中注入'News'類? – JamesHalsall 2013-02-28 13:08:18

+0

'用戶'沒有意義。你如何擁有一個'Users'? – 2013-02-28 13:09:42

回答

1

Plz發佈你正在得到什麼錯誤。否則,很難捕捉到問題。但是,如果你不想實例化用戶類新聞類,你可以訪問它像

class News 
{ 
    // news class 
} 

class Users 
{ 
    public function some_method(News $news){ 
     // work with the $news object 
    } 
} 

$us = new Users(); 
$us->some_method(new News(/*$db*/)); 

這僅僅是一個基本的代碼給你的,你如何使用它的想法。在生產環境中,你必須採取很多預防措施。

+0

這是一個壞主意。你的代碼甚至不起作用。它也不是一個單身人士。 – 2013-02-28 13:17:22

+0

我的不好。我編輯過它。現在檢查它.. – Sid 2013-02-28 13:24:15

+0

仍然不是一個單身人士:刪除'功能實例()'並將其稱爲依賴注入 – Federkun 2013-02-28 13:26:45