Просмотр поста

.
Swank
Сексуальность валенка

Мой простой класс для роботы с pdo:

<?php
class DB {
    
    protected static $connection;
    
    private static $querycount = 0;
    private static $querytime = 0.0;
    
    public static function connection() {
        if (is_null(static::$connection)) {
            
            # Данные от бд
            $dbcfg = [
                'host' => 'localhost',
                'name' => 'game2',
                'user' => 'root',
                'pass' => ''
            ];
            
            # Параметры подключения
            $opt = [
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            ];
            
            try {
                static::$connection = new PDO("mysql:host=".$dbcfg['host'].";dbname=".$dbcfg['name'], $dbcfg['user'], $dbcfg['pass'], $opt);
            } catch (PDOException $e) {
                throw new RuntimeException('Не удалось установить соединение с базой данных:%s'. $e->getMessage());
            }
        }

        return static::$connection;
    }

    public static function prepare($sql, $values = null) {
        $stime = microtime(true);
        $sth = static::connection()->prepare($sql);
        $sth->execute($values);
        static::$querytime += (microtime(true) - $stime);
        static::$querycount++;
        
        return $sth;
    }
    
    public static function getQueryCount() {
        return static::$querycount;
    }
    
    public static function getQueryTime() {
        return self::$querytime;
    }

    public static function __callStatic($method, array $arguments ) {
        return call_user_func_array([static::connection(), $method], $arguments);
    }

}
?>