2017-11-20 12 views
-2

私は2つのクラスを持っています:アカウントとデータベースIn複数のファイルに2つのクラスが含まれています。 1つのクラスと別のクラス

アカウントクラスはデータベースクラスを使用する必要がありますが、アカウントクラスにはたくさんのファイルが含まれています。

データベースクラスがインクルードされた後にデータベースクラスが存在しないかどうかを確認できます。しかし、これを行うための標準的な方法はありますか?

+3

使用を[するrequire_once](http://php.net/require_once)してみてくださいrequireの多くを使用しますか、 [include_once](http://php.net/include_once)を使用して、Databaseクラスがまだ含まれていない場合にのみ含まれるようにします。 – rickdenhaan

+2

PHPでオートロードする方法とpsr-4でオートローディングする方法については、時間をかけて投資してください。一度セットアップすると、ファイルをもう含める必要はありません。 –

+0

[要求、インクルードと要求の違いは\ _onceですか?](https://stackoverflow.com/questions/2418473/difference-between-require-include-and-require)の可能な複製-once) – yivi

答えて

-1

あなたは親クラスでデータベースのインスタンスのみを使用して検討する必要があります。

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

関連する問題