lka*_*ono 14 php pdo namespaces
我正面临着一个迄今为止我无法解决的问题.我创建了一个database class到app/db/mysql/database.php包含以下内容:
<?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'] );
}
}
Run Code Online (Sandbox Code Playgroud)
使用作曲家,我正在自动加载这个类:
{
"autoload" : {
"classmap" : [
"app/libraries",
"app/db"
]
}
}
Run Code Online (Sandbox Code Playgroud)
其中生成autoload_classmap.php如下:
return array(
'App\\Database\\Database' => $baseDir . '/app/db/mysql/database.php',
'App\\Libraries\\Parser' => $baseDir . '/app/libraries/Parser.php',
);
Run Code Online (Sandbox Code Playgroud)
现在,当一切正常时,我总是收到与PDO相关的错误:
Fatal error: Class 'App\Database\PDO' not found in /var/www/my_application/app/db/mysql/database.php on line 24
Run Code Online (Sandbox Code Playgroud)
我认为问题来自于namespace因为当我将类放入索引页面时,我没有任何错误.PDO已安装并正常运行.
wtf*_*net 47
问题已被编辑,但对于刚刚直接回答答案的人来说,这里是..
您应该为方法中的对象使用正确的命名空间,"使用"它们或在它们前面添加根命名空间;
<?php
//... namespace etc...
use \PDO;
self::$connection = new PDO("mysql:host=$host;dbname=$base", $user, $pass);
Run Code Online (Sandbox Code Playgroud)
或者干脆;
self::$connection = new \PDO("mysql:host=$host;dbname=$base", $user, $pass);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21063 次 |
| 最近记录: |