2013-10-31 23 views
13

私は不幸にもこれまで解決できなかった問題に直面しています。私は、次の内容でapp/db/mysql/database.phpdatabase classを作成しました:今PHP名前空間PDOが見つかりません

return array(
    'App\\Database\\Database' => $baseDir . '/app/db/mysql/database.php', 
    'App\\Libraries\\Parser' => $baseDir . '/app/libraries/Parser.php', 
); 

autoload_classmap.phpなどを生成

{ 
    "autoload" : { 
     "classmap" : [ 
      "app/libraries", 
      "app/db" 
     ] 
    } 
} 

:作曲を使用して

<?php 
    namespace App\Database; 
    use Symfony\Component\Yaml\Yaml; 

    class Database{ 
     private static $connection = null; 

     private function __construct($host, $base, $user, $pass){ 
      try{ 
       self::$connection = new PDO("mysql:host=$host;dbname=$base", $user, $pass); 
      }catch(PDOException $e){ 
       die($e->getMessage()); 
      } 
     } 

     public static function get(){ 
      if(self::$connection !== null){ 
       return self::$connection; 
      } 
      $yaml = Yaml::parse(file_get_contents(realpath('./app') . '/database.yml')); 
      self::$connection = new Database($yaml['host'], $yaml['base'], $yaml['user'], $yaml['pass']); 
     } 
    } 

は、私はこのクラスを自動ロードしています、すべて正常に動作すると、私はいつもPDOに関するエラーが発生しています:

Fatal error: Class 'App\Database\PDO' not found in /var/www/my_application/app/db/mysql/database.php on line 24 

私はインデックスページにクラスを配置するので、私はエラーがないので、namespaceから問題が来ると思う。 PDOがインストールされ、動作します。

+0

ああ、私はあなた自身でそれを解決してください。私の答えを削除する –

+0

@DamienPirsyより良い復元。未回答の質問リストを減らすには、質問全体を削除するか、回答を持たなければなりません。 –

+0

質問を削除すると、私にはうってつけの音になります(最初は避けられた可能性があるため)。またはOPが自分自身に答えを提供し、自動的に受け入れることができます –

答えて

33

質問は、あなたが「使用」のいずれか、あなたの方法で、オブジェクトの正しい名前空間を使用する必要があります

...すでに編集したが、ちょうど答えにまっすぐにオーバー向かっている人々のために、ここにあるましたそれらの接頭辞にルート名前空間を付けます。

<?php 
//... namespace etc... 

use \PDO; 

self::$connection = new PDO("mysql:host=$host;dbname=$base", $user, $pass); 

または単純に;

self::$connection = new \PDO("mysql:host=$host;dbname=$base", $user, $pass); 
関連する問題