【问题标题】:PHP namespace PDO not found未找到 PHP 命名空间 PDO
【发布时间】:2013-11-11 00:48:55
【问题描述】:

很遗憾,我遇到了一个迄今为止无法解决的问题。我在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'] );
        }
    }

使用作曲家,我正在自动加载这个类:

{
    "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 已安装并运行。

【问题讨论】:

  • 哦,我看到你自己解决了这个问题。删除我的答案
  • @DamienPirsy 更好地恢复它。必须删除整个问题或获得答案,以减少未回答的问题列表。
  • 删除问题对我来说听起来更好(因为它本来可以避免),或者 OP 可以为自己提供答案并自动接受它
  • 我已经从问题中删除了答案,因为它本身应该是一个答案(我们已经接受了一个)。

标签: php pdo namespaces


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您使用 PDO,那么您应该在文件中添加行 use PDO,您将在创建对象 PDO 的文件和每个模型文件中使用类 PDO Ford 示例。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多