• Unay Santisteban

    Desarrollador Web

  • 1

Sobre Mi

Conóceme un poco más

Desarrollador web, me gusta "jugar" con las nuevas tecnologías, desarrollo aplicaciones web como un hobby. Siento especial atracción por el desarrollo backend.

He desarrollado aplicaciones web con CodeIgniter, Laravel, Symfony y otros frameworks. Me gusta jugar con AngularJS, NodeJS y actualmente estoy en el apasionante mundo de la APS (Application Packaging Standard).

Información Personal

F. Nacimiento:
Email:
Web:
Ciudad:
Pais:
10 de Noviembre de 1988
Santander, Cantabria
España

Sigueme en

Hobbies e Intereses


  • Juegos


  • Musica


  • Cine


  • Cafe


  • Codigo


  • Bici


  • Libros


  • GNU/Linux

Mis Habilidades

Algunas de mis habilidades más importantes son

HTML5 y CSS3
100%
PHP
100%
JavaScript / JQuery
80%
MySQL / MySQL Workbench
85%
Joomla
100%
Wordpress
60%
Git
90%
Photoshop CS5/6
85%
  • Ruby
  • Ruby on Rails
  • Laravel
  • CodeIgniter
  • SQLite
  • LESS
  • SASS
  • Parallax
  • Linux Server
  • Apache 2
  • Metasploit
  • Armitage
  • NMap
  • AngularJS

Nueva versión de la clase de acceso a bases de datos, esta vez basada en PDO, ofrece la posibilidad de conectar con varios tipos de bases de datos.

Configuración

Bien, lo primero que debemos hacer para usar la capa de abstracción, es crear una nueva clase a la que llamaremos Config y que contendrá los parámetros de configuración de la BD, así como otros valores de configuración para nuestra aplicación web.

class Config {
    public $driver = 'mysql';
    public $dbhost = 'localhost';
    public $dbuser = 'usuario_basedatos';
    public $dbpass = 'clave_basedatos';
    public $dbname = 'nombre_basedatos';
}

 Una vez que hemos configurado los datos de acceso, debemos importar la configuración y la capa de abstracción:

require 'configuration.php';
require 'database.pdo.class.php';

Uso

Ahora ya podemos usar la capa con total libertad, por ejemplo si queremos realizar una consulta a una tabla primero debemos obtener una instancia de la capa de abstracción, luego definir la consulta que deseamos realizar y finalmente seleccionar como queremos obtener los datos:

$db = database::getInstance();
$db->query('SELECT * FROM usuarios');
$usuarios = $db->loadObjectList();

En el código de arriba vemos que primero obtenemos una instancia, luego ejecutamos la consulta y finalmente obtenemos los datos en forma de lista de objetos. Esta clase nos permite obtener los datos de las siguientes maneras:

  • Resultado unico: loadResult();
  • Lista de resultado de una columna: loadColumn();
  • Objeto unico:loadObject();
  • Lista de objetos:loadObjectList();
  • Array asociada:loadAssocRow();
  • Lista de arrays arrociadas:loadAssocList();
  • Array indexado: loadIndexedRow();
  • Lista de arrays indexados: loadIndexedList();
  • Objeto JSON: loadJsonObject();
  • Lista de Objetos JSON: loadJsonObjectList();
  • Documento XML: loadXmlObjectList();

Podemos realizar consultas preparadas de forma fácil y sencilla, usando el mismo método query(), al cual le pasaremos la consulta preparada y un array opcional con los parámetros de dicha consulta:

$db = database::getInstance();
$sql = "SELECT * FROM usuarios WHERE id = :id";
$params = array(':id' => 2);
$db->query($sql,$params);
$result = $db->loadObject();

Vemos que en el ejemplo de arriba usamos loadObject() para cargar el resultado devuelto por la consulta pero podemos usar cualquiera de los metodos listados anteriormente.

Tambien podemos obtener el numero de filas devueltas en la consulta SELECT realizada:

$count = $db->getCountRows();

XML y JSON

Podemos obtener el resultado de la consulta en formato XML o JSON usando los metodos loadXmlDocument(); y loadJsonObjectList(); respectivamente:

xml:

<?xml version="1.0" encoding="UTF-8"?>
<usuarios>
    <usuario>
        <id>1</id>
        <nombre>Hombre J.</nombre>
        <apellido>Simpson</apellido>
    </usuario>
    <usuario>
        <id>2</id>
        <nombre>Walter</nombre>
        <apellido>White</apellido>
    </usuario>
    <usuario>
        <id>3</id>
        <nombre>Sheldon</nombre>
        <apellido>Cooper</apellido>
    </usuario>
</usuarios>

 json:

[
    {"id":"1","nombre":"Hombre J.","apellido":"Simpson"},
    {"id":"2","nombre":"Walter","apellido":"White"},
    {"id":"3","nombre":"Sheldon","apellido":"Cooper"}
]

Transacciones

También podemos realizar transacciones de una manera muy sencilla usando los métodos startTransaction() y endTransaction() tal y como vemos en el ejemplo:

$db = database::getInstance();
$db->startTransaction();
$db->query("INSERT INTO usuarios VALUES (NULL, 'Tyrande', 'Whisperwind')");
$db->query("INSERT INTO usuarios VALUES (NULL, 'Vincent', 'Vega')");
$db->endTransaction();

El método startTransaction() inicia la transacción y activa la escucha de errores para que cuando se ejecute el método endTransaction() se ejecute commit() si todo a ido bien o rollback() a ocurrido algún fallo en las consultas.

Errores

Esta clase también nos permite obtener los posibles errores de cada consulta usando el método getError(), que nos devolverá un array asociativo con el código de error y la descripción de dicho error:

$db = database::getInstance();
$db->query('SELECT * FROM suarios');
$error = $db->getError();
var_dump($error);

 Al imprimir la variable error veremos:

array (size=2)
  'code' => int 1146
  'desc' => string 'Table 'test.suarios' doesn't exist' (length=34)

Enlaces

API: class-database

GitHub: database-pdo-class

Formación y Experiencia

Esta es la formación que tengo y los lugares en los que trabajé

2015
a
AHORA

SofCloudIT an Ingram Micro Company

Rol: Cloud Backend Developer
Descripción: Desarrollar backend APS y logicas de endpoint.

2012
a
2015

Sayga Informática

Rol: Programador y Desarrollador Web
Descripción: Diseño, desarrollo y mantenimiento de sitios y aplicaciones web.

2008
a
2012

PC Coste Laredo

Rol: Tecnico de Reparaciones
Descripción: Reparación y mantenimiento de sistemas informáticos, tanto de hardware como de software. Instalación de sistemas informáticos en red y servidores.


2012
a
2014

Desarrollo de Aplicaciones Web (DAW)

Tipo: FP Ciclo Superior
Descripción: Desarrollo, implementación y mantenimiento de aplicaciones web.

2010
a
2012

Administracion de Sistema Operativo en Red (ASIR)

Tipo: FP Ciclo Superior
Descripción: Configurar, administrar y mantener sistemas informáticos, garantizando la funcionalidad, la integridad de los recursos y servicios del sistema.

2006
a
2008

Explotación de Sistema Microinformaticos (ESI)

Tipo: FP Ciclo Medio
Descripción: Instalar, configurar y mantener sistema informáticos aislados o en red.