2016-12-31 2 views
0

Как я могу назвать класс DbConnect и использовать его для другого класса, такого как класс FormElement?Как я могу назвать класс подключения из другого класса?

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

, но я что-то разбор ошибок «Вызов неопределенной метод БДСВЯЗИ :: запроса()», можете ли вы привести мне пример для этой проблемы. Спасибо –

+0

Поскольку теперь он ищет все методы DBCONNECT для поиска метода запроса, а когда его не удается найти, выведите ошибку. Вы можете определить метод запроса внутри своего DBCONNECTION для выполнения задания. –

+0

Спасибо за разъяснение @hamed :) –

Смежные вопросы