php - 如何在另一个类中使用$PDO变量?

标签 php mysql class object pdo

我有数据库连接代码:

define('DBDRIVER', 'mysql');
    define("DBHOST", "localhost");
    define("DBNAME", "dbname");
    define("DBUSER", "username");
    define("DBPASS", "password");

    $dboptions = array(
        PDO::ATTR_PERSISTENT => FALSE,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    );

    try {       
        $PDO = new PDO(DBDRIVER . ':host=' . DBHOST . ';dbname=' . DBNAME, DBUSER, DBPASS, $dboptions);
        $PDO -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $PDO -> setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
    } catch(PDOException $e) {
        echo "Connection failed: " . $e -> getMessage();
    }

并上课。

如何在我的类中使用 PDO 变量? 我可以使用全局变量但不能在类里面工作吗? 有没有系统在类中使用这个 PDO 变量(不要为 PDO 连接定义任何类或构造函数)?

最佳答案

class MyDb{
    public $pdo;
    private static $instance;

    public function __construct(PDO $pdo){
        $this->pdo = $pdo;
    }

    public static function getInstance()
    {
        if (!isset(self::$instance))
        {
            $object = __CLASS__;
            self::$instance = new $object;
        }
        return self::$instance;
    }

}

$query = MyDb::getInstance()->pdo->query('SELECT * FROM ...');

关于php - 如何在另一个类中使用$PDO变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32021593/

相关文章:

php - 如何在此 SQL 查询中返回 SUM(摘要)

PHP 获取字符串中的 html 注释并包裹在 <pre> 标记中。正则表达式还是 DOM?

php - 动态函数参数

objective-c - 我可以创建非 ARC 类的 ARC 子类吗

java - 创建特定数量的按钮

c++ - 如何管理std::vector的std::vector

javascript - 如何在 Laravel 中调用 ajax 后重定向到登录?

sql - 基于其他字段更改 SQL CONSTRAINT

执行存储过程时 PHP Apache 崩溃

sql - 如何将数据从 Postgres 移动到在 Amazon 的 RDS 上运行的 MySQL?