php – PDO – Trabajar con prefijos de tabla

Me gusta prefijar mis tablas en caso de que necesite instalar la aplicación en un host con una sola base de datos. Me preguntaba si hay una manera simple de trabajar con prefijos de tabla usando la clase PDO.

Por el momento, tengo que sobrescribir cada método en mi propia base de datos, reemplazar% p con el prefijo y llamar al método super. ¡Funciona, pero no es bonito!

Mejor respuesta
Ampliar la clase PDO es probablemente la mejor opción.

class MyPDO extends PDO
{
    protected $_table_prefix;
    protected $_table_suffix;

    public function __construct($dsn, $user = null, $password = null, $driver_options = array(), $prefix = null, $suffix = null)
    {
        $this->_table_prefix = $prefix;
        $this->_table_suffix = $suffix;
        parent::__construct($dsn, $user, $password, $driver_options);
    }

    public function exec($statement)
    {
        $statement = $this->_tablePrefixSuffix($statement);
        return parent::exec($statement);
    }

    public function prepare($statement, $driver_options = array())
    {
        $statement = $this->_tablePrefixSuffix($statement);
        return parent::prepare($statement, $driver_options);
    }

    public function query($statement)
    {
        $statement = $this->_tablePrefixSuffix($statement);
        $args      = func_get_args();

        if (count($args) > 1) {
            return call_user_func_array(array($this, 'parent::query'), $args);
        } else {
            return parent::query($statement);
        }
    }

    protected function _tablePrefixSuffix($statement)
    {
        return sprintf($statement, $this->_table_prefix, $this->_table_suffix);
    }
}

Por favor indique la dirección original:php – PDO – Trabajar con prefijos de tabla - Código de registro