2013-02-10 116 views
1

可能被問了很多次,但我很頭痛。將mysqli傳遞給功能使用類

我有以下類來管理MySQL數據庫。

class blog {   
    function show ($mysqli) { 
    // Code working on $mysqli here 
    } 
} 

因爲我會在很多功能使用$ mysqli的這個類我讀,我可以爲了使$ mysqli的變量傳遞給類,並使用它的每個函數內,所以我可以做創建構造函數內例如:

$blog = new blog($mysqli); 
$blog -> show(); 

這可能嗎?

回答

3

這被稱爲Dependency injection

只需使用一個字段$mysqli在你的類和構造函數初始化它,使用它通過$this->mysqli

class blog { 
    private $mysqli; 

    function __construct(mysqli $mysqli) { 
     $this->mysqli = $mysqli; 
    } 

    function show() { 
     // Code working on $this->mysqli here 
    } 
} 
+0

這意味着我將不得不寫入$這 - > mysqli而不是$ mysqli所有的時間,是嗎?如果是這樣,有什麼辦法可以避免它? – wiredmark 2013-02-10 23:18:12

+1

是的,在你的課堂上,你將不得不使用'$ this-> mysqli'來訪問該字段。你無法避免它。 – tmuguet 2013-02-10 23:19:22

+0

謝謝,考慮一下,我的最後一個是一個相當愚蠢的問題。我將不得不只寫一次。萬分感謝。 – wiredmark 2013-02-10 23:19:56

1

將其存儲在類,會是這樣的:

class blog { 
    private $mysqli; 
    function __construct($dbi) { 
     $this->mysqli = $dbi; 
    }   
    function show() { 
    $this->mysqli->query(); //example usage 
    // Code working on $mysqli here 
    } 
} 

然後在你的代碼中使用該類:

$blog = new blog($mysqli); 
$blog->show();