2013-03-08 3 views
2

저는 학교 프로젝트를 진행하고 있습니다 (6 월 마감, 충분한 시간 ^^).PHP : 데이터베이스 - 클래스 또는 글로벌 데이터베이스 연결

현재 conf.php에 데이터베이스가 있고 (다른 모든 .php에는이 스크립트가 포함되어 있으며 mysqli-object를 참조하는 변수가 있습니다) 클래스의 모든 메소드에서 데이터베이스에 액세스하는 중입니다. 글로벌 $ db_conn; " 문제는 class.php 만 열면 conf.php가 포함되지 않고 오류가 발생한다는 것입니다. 그래서 모든 개체와 mysqli - 개체에 대한 개인 인스턴스/정적 변수를 추가하는 방법에 대한 생각. (예상치 못한 T_NEW) 이 작동하지 않습니다 :

class foo{ 
    private static $db_conn = new mysqli("", "", "", ""); 
} 

을 당신은 DB-연결을 처리하려면 어떻게합니까? 이 특정 문제를 어떻게 처리합니까?

답변

-1

당신이 당신의 DB 연결 Singleton 클래스 당신이 __autoload() 기능이 만들 경우에, 당신은 단지 건설 중에 설정하여 각 클래스에서 dbconnection 속성을 가질 수 있습니다.

class DBConnection{ 

    private static $instance; 

    private function __construct(){ 
    //make your db connnection 
    } 

    public static function get_connection(){ 
    if(empty self::$instance) self::$instance = new DBConnection; 
    return self::$instance; 
    } 
} 

class Foo { 

    private $db; 

    function __construct(){ 
    $this->db=DBConnection::get_connection(); 
    } 
} 
+0

감사합니다. 그거 좋은 생각이야. 나는 그것을 시도 할 것이라고 생각한다. ^^ 감사합니다. –

+4

-1 : 싱글 톤은 ** 전혀 맞지 않습니다 ** 정답은 –

+0

@ tereško입니다. 이유가 무엇인지 설명해주세요. – Mathlight

0

^^ 사전에

덕분에 당신은 include_once 다른 파일과 클래스 파일 모두에서 conf.php 파일을 사용할 수 있습니다. 그렇게하면 항상 내용 (및 db 참조)을 갖게됩니다.

+0

답장을 보내 주셔서 감사합니다. 문제는 모든 클래스와 conf.php가 다른 폴더와 하위 폴더에 있다는 것입니다. 그래서 나는 include_once 나 require_once를 사용할 수 없다. 하지만 내 프로젝트를 다시 구성하여 모든 가져 오기 항목이 같은 폴더에 있으므로 문제가 해결 될 것입니다. 감사합니다. –

관련 문제