gpt4 book ai didi

未找到 PHP 命名空间 PDO

转载 作者:IT王子 更新时间:2023-10-28 23:57:55 25 4
gpt4 key购买 nike

不幸的是,我遇到了一个到目前为止无法解决的问题。我在 app/db/mysql/database.php 中创建了一个 database class,内容如下:

<?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'] );
}
}

使用 Composer ,我正在自动加载这个类:

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

它生成一个 autoload_classmap.php 例如:

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

现在,当一切正常时,我总是收到与 PDO 相关的错误:

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

我认为问题出在 namespace 上,因为当我将类放入索引页时,我没有任何错误。 PDO 已安装并正常工作。

最佳答案

您应该为方法中的对象使用正确的命名空间,“使用”它们或在它们前面加上根命名空间;

<?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);

关于未找到 PHP 命名空间 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com