2016-12-31 83 views
0

我该如何调用DbConnect类并将其用于FormElement类等其他类?如何从另一个类调用Connection类?

main.class.php

class DBCONNECT 
{ 
    public $dbConnection; 

    public function __construct($dbHost, $dbUsername, $dbPassword, $dbName){ 

     $this->dbConnection = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); 

     if($this->dbConnection->error){ 
      trigger_error("Sorry couldn't connect to database :("); // problem connect to database 
     }else{ 
      return true; // connection successfully 
     } 
    } 
} 

,我的另一个类是

element.class.php

class FormElement 
{ 
    public function getCmbPovinsi(){ 
    $userSqlQuery = "SELECT id,provinsi FROM aud_provinsi ORDER BY provinsi"; 
    $userSys  = $this->dbConnection->query($userSqlQuery) or die($this->dbConnection->error); 

    if ($userSys) { 
     /* checking for available users */ 
     if($userSys->num_rows > 0){ 
      echo'<div class="col_one_fourth"> 
        <label for="provinsi">Provinsi<small>*</small></label> 
         <select id="provinsi" name="provinsi" class="sm-form-control required"> 
          <option value="">-- Pilih Provinsi --</option>'; 

        while ($userResult = $userSys->fetch_assoc()) { 
         echo '<option value="'.$userResult['id'].'">'.$userResult['provinsi'].'</option>';   
        } 
        echo '</select> 
       </div>'; 
     }else{ 
      echo "Error Handling!!"; 
     } 
    }else{ 
     echo "invalid query : ".$this->dbConnection->error."<br>"; 
     echo "whole query : ".$userQuery ."<br>"; 
    }    
    } 
} 

这个代码怎么能工作的本质y?

+0

开始从:_what是依赖注入_ – Federkun

回答

1

在element.class.php中首先需要main.class.php PATH。

#element.clas.php#

require 'main.class.php'; 

class FormElement 
{ 
    protected $connection; 

    public function __construct(DBCONNECT $connection) 
    { 
    $this->connection = $connection; 
    } 

    public function getCmbPovinsi() 
    { 
    ... 
    $this->connection->query(...); 
    } 

} 

这种方法被称为依赖注入。现在,当你想使用元素,你可以创建这样一个对象:

$element = new FormElement(new DBCONNECT("host", "username", "password", "db")); 
+0

但我得到的东西错误解析“调用未定义的方法DBCONNECT ::查询()”,你能举一些这个问题的例子吗?谢谢 –

+0

因为现在它搜索所有DBCONNECT方法来查找查询方法,并且何时找不到它,会引发错误。您可以在DBCONNECTION中定义一个查询方法来完成这项工作。 –

+0

谢谢你的解释@hamed :) –