2017-11-20 4 views
-2

나는 계정과 데이터베이스의 두 클래스가 있습니다In은 여러 파일에 두 개의 클래스를 포함합니다. 그리고 한 클래스에서 다른 클래스

계정 클래스는 데이터베이스 클래스를 사용해야하지만 계정 클래스에는 많은 파일이 포함되어 있으며 일부 파일에는 데이터베이스 클래스가 이미 존재하며 오류가 발생합니다.

데이터베이스 클래스가 포함 된 이후에 데이터베이스 클래스가 포함되어 있는지 확인할 수 있습니다. 그러나 이것을하기위한 표준 방법이 있습니까? 당신은 부모 클래스에서 데이터베이스의 인스턴스를 사용하는 것이 좋습니다

+3

사용 [require_once를 (http://php.net/require_once) 또는 [include_once] (http://php.net/include_once) 데이터베이스 클래스가 아직 포함되지 않은 경우에만 포함되도록하십시오. – rickdenhaan

+2

PHP와 psr-4 표준에서 자동 로딩에 대해 알아 보려면 시간을 투자하십시오. 설치가 끝나면 더 이상 파일을 포함 할 필요가 없습니다. –

+0

[필요, 포함 및 필요 \ 차이점의 차이점] 가능한 복제본 (https://stackoverflow.com/questions/2418473/difference-between-require-include-and-require) -once) – yivi

답변

-1

: require를 많이 사용하는 대신

require_once('Database'); // Try to move this part to autoloader 

class Base { 
    private static $db; 

    public function db() { 
     if (empty(self::$db)) { 
      self::$db = new Database(); 
     } 

     return self::$db; 
    } 
} 

class Account extends Base { 
    public function test() { 
     $this->db()->someMethodFromDatabase(); 
    } 
} 

class User extends Base { 
    public function test() { 
     $this->db()->someMethodFromDatabase(); 
    } 
} 

시도 autoloading your classes