PDOを使用するDBラッパークラスがあり、コンストラクターでPDOオブジェクトを作成します。ラッパークラスは名前空間にあり、オートローダーを使用しています。問題は、名前空間内にPDOクラスが見つからないことです。そこで、ここで説明するようにグローバル名前空間を使用してみました。
//Class file
namespace Company\Common;
class DB {
private function __construct(){
$this->Handle=new PDO(...);
}
}
これで、私はこれを(予想通りに)得ます:
Warning: require(...\vendors\Company\Common\PDO.class.php): failed to open stream
私がこれを行う場合:
namespace Company\Common;
use PDO;
私はこれを手に入れます:
Fatal error: Class 'DB' not found in ...\includes\utils.php
そして、utils.phpには、名前空間を実装する前に正常に機能したエラー行にこれが含まれています。
DB::getInstance();
あるいは、私はこれを試しました:
namespace Company\Common;
class DB {
private function __construct(){
$this->Handle=new \PDO(...);
}
}
これは、元々のように名前空間内にPDOクラスをロードしようとしました。
どうすればこれを解決できますか?use PDO
グローバルPDOクラスをロードするか、ロードするかと思いましたnew \PDO
が、機能していないようです。