<?php


namespace fastphp\db;

use PDO;
use PDOException;

/**
 * 数据库操作类
 * 其属性$pdo为静态属性，所以在页面执行周期内
 * 只要一次赋值，以后获取的还是首次赋值的内容
 * 这里就是pdo对象，这样可以保证运行期间只有
 * 一个数据库连接对象，简单的单例模式
 * Class Db
 * @package fastphp\db
 */
class Db
{
    private static $pdo = null;

    public static function pdo(){
        if(self::$pdo !== null){
            return self::$pdo;
        }

        try{
            $dns = sprintf('mysql:host=%s;post=%s;dbname=%s;chartset=utf8',DB_HOST,DB_PORT,DB_NAME);
            $option = array(PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC);
            self::$pdo = new PDO($dns,DB_USER,DB_PASS,$option);
            self::$pdo->query("set names utf8");

            return self::$pdo;

        } catch (PDOException $e){
            exit($e->getMessage());
        }
    }
}