Hola a todos, antes de nada quiero decirles que soy nuevo en este foro y agradezco  de antemano, vuestra atención.
 
Soy nuevo programando en PHP y aun mas programando con POO, por eso quiero mostrarles un sencillo código que he realizado para que me aconsejen en que punto se puede mejorar o como lo haríais vosotros. Realmente el código funciona, pero no quiere decir que lo pueda estar haciendo bien y por eso pido vuestra colaboracion: 
1ª página:
conexion.php  
 Código PHP:
    class Conectar{
private $host, $user, $pass, $database, $charset;
 
    public function __construct() {
 
    require_once('db.php');  // Contiene las constantes de la conf. de la base de datos
 
    $this->host        = SERVIDORLOCAL;
        $this->user        = USUARIO;
        $this->pass        = CONTRASEÑA;
        $this->database = BASEDATOS;
        $this->charset    = CHARSET;
 
    }
 
    public function conexion(){
        try{
            if(!$mysqli = new mysqli($this->host, $this->user, $this->pass, $this->database)) throw new Exception("No se ha podido conectar con la base de datos.");
            // Codificacion de caracteres utf-8
            $mysqli->set_charset("'" . $this->charset . "'");
 
        }catch(Exception $e){
            echo "Mensaje de error: " . $e->getMessage();
            exit;
        }
            return $mysqli;
    }
 
} 
    
  2ª página:
insertClass.php 
 Código PHP:
    require_once 'conexion.php';
 
    class InsertDataDb {
        private  $conectar;
        private  $con;
        private  $params = array();
        private  $type;
        private  $tableName;
        private  $columnName;
        private  $values;
 
        public function __construct() {
            $this->conectar = new Conectar();
            $this->con = $this->conectar->conexion();
        }
 
        private function refValues($arr){
            if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
            {
                $refs = array();
                foreach($arr as $key => $value)
                    $refs[$key] = &$arr[$key];
                return $refs;
            }
        return $arr;
        }
 
            //Setters
 
            /* Bind parameters. Types: s = string, i = integer, d = double,  b = blob */
        public function setType($type){
            $this->type = (string) $type;
        }
 
        public function setTableName($tableName){
            $this->tableName = (string) $tableName;
        }
 
        public function setParams($bind_params){
//Obtiene los nombre de la columna de la tabla de la bd
            if(!isset($this->columnName)){
                $this->columnName = implode(" , ", array_keys($bind_params));
            }
//Obtiene el número de datos que el cliente va a ingresar en la bd para convertirlo en una sentencia preparada ejem: (?,?,?)
            if (!isset($this->values)) {
                $c = count($bind_params);
                $v ='';
                for($i = 0; $i < $c; $i++){
                    $v .= '?,';
                }
                $this->values = rtrim($v,',');
            }
//Crea la sql
            if(!isset($this->sql)){
                $this->sql = "INSERT INTO " . $this->tableName . " (" . $this->columnName . ") VALUES (" . $this->values . ")";
            }
            $params = $bind_params;
            if (isset($params) && is_array($params)) {
                /* Unimos los parametros */
                array_unshift($params, $this->type);
                $bp = array_values($params);
                $this->params = $bp;
            }
        }
 
 
            //Insertar datos
        public function insertData(){
            if($stmt = $this->con->prepare($this->sql)){
                call_user_func_array(array($stmt, 'bind_param'), $this->refValues($this->params));
            }else{
                throw new Exception("No se ha podido introducir los datos en la base de datos " . $this->con->error);
            }
 
            if(!$stmt->execute()) throw new Exception("Se ha producido un fallo en la ejecución de almacenamiento de datos en la base de datos." . $this->con->error);
    $this->close();    
        }
 
            //Inserta el ultimo id registrado
        public function insertId(){
            return $this->con->insert_id;
        }
 
        public function close(){
            return $this->con->close();
        }
    } 
    
                                                 /* EJECUTAR */ 
 Código PHP:
    try{
$data = array(    
'cliente'     => 'Manolito',
'email'       => '[email protected]',
'password' => '1234');
 
        $insert = new InsertDataDb();
        $insert->setTableName('usuario'); // Nombre de la tabla de la bd
        $insert->setType('sss');                //   Types: s = string, i = integer ...
        $insert->setParams($data);        
        $insert->insertData();
 
    }catch(Exception $e){
        echo "Mensaje de error: " . $e->getMessage();
        exit();
    } 
       Mi idea es mejorar/corregir mi código y aprender de vosotros. En Internet hay mil maneras de hacerlo pero cada uno lo hace de manera diferente!!!