2013-02-02 2 views
0

오늘부터 비 정적 데이터베이스의 변수를 PHP 프로젝트의 함수에 전달 했으므로 데이터베이스 액세스가 필요했습니다. 여러 데이터베이스 연결에 대해 모두 읽었으므로 데이터베이스 연결을 정적 함수로 변경 했으므로 모든 함수에서 데이터베이스 연결에 대한 액세스 권한을 함수의 매개 변수로 전달하지 않았습니다. 따라서 예 : myDatabaseConnection :: myFirstdatabase-> prepare 등을 사용하여 데이터베이스 연결 (다른 데이터베이스)에 액세스 할 수 있습니다.함수에 대한 매개 변수로서의 정적 데이터베이스 연결

문제는 무엇입니까? 이런 식으로하는 것이 좋다. 일부 함수 (예 : 데이터베이스에서 데이터를 읽는 것과 같은)는 데이터베이스 연결에 따라 다르지만, 함수의 매개 변수에서 데이터베이스 연결 변수를 제거하면 뭔가 (일종의 종속성) 누락 된 것처럼 보입니다. .

그래서 가장 좋은 방법은 무엇입니까? 데이터베이스 액세스가 필요한 함수에 데이터베이스 연결을 변수로 전달합니까?

대단히 감사합니다.

연결되는 것으로 이해합니다. 하지만 내 프로젝트의 다른 기능은 무엇입니까? 예를 들면. 데이터베이스에서 모든 멤버 이름을 읽는 함수? 데이터베이스 연결 변수를 해당 함수에 전달했거나 내 "전역"정적 데이터베이스 연결을 사용하여 해당 함수 내에서 데이터베이스에 대한 연결에 액세스합니까? 나도 알다시피, 그것은 글로벌하지 않지만 내 정적 데이터베이스 연결은 어디에서나 액세스 할 수 있습니다 ...

답변

0
<?php 
require_once('CLASSdatabase.php'); 

class AUTHENTICATE{ 
    private $user_database_object; 
    private $current; 
    private $email_id; 
    private $password; 
    private $error; 

    function __construct($email_id,$password){ 
     $this->user_database_object=new MYSQL_DATABASE("user"); 
     $this->email_id=$email_id; 
     $this->password=$password; 
    } 

    private function verify_password(){ 
     $sql="select password from `users` where email_id='"; 
     $sql.=$this->email_id."';"; 
     $this->user_database_object->open_connection(); 
     $row=$this->user_database_object->fetch_array($this->user_database_object->query($sql)); 
     // code ... 
     $this->user_database_object->close_connection(); 
    } 
} 
// code .. 
?> 

CLASSdatabase.php

<?php 
require_once("config.php"); 

    class MYSQL_DATABASE{ 
     private $dbname; 
     private $connection; 
     public $last_query; 

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

     public function open_connection(){ 
     } 
     public function close_connection(){ 
     } 
     public function query($sql){ 
     } 
     public function fetch_array($result_set){ 
     } 
     // code ... 
    } 
?> 
0

데이터베이스 연결 개체는 인스턴스화 할 때 종속성을 주입해야합니다. 그런 다음 수업을 재사용 할 수 있습니다. 이럴

+0

당신은 예를 제공하십시오 수 있습니다. – ade

관련 문제