Mostrando entradas con la etiqueta PDO. Mostrar todas las entradas
Mostrando entradas con la etiqueta PDO. Mostrar todas las entradas

2011-06-25

ThinPHP es otro Framework para PHP muy ligero menos de 50 KB comprimido

Thin PHP Framework (TPF)

ThinPHP es una fuente ligera, abierta, flexible PHP5 framework MVC. Su objetivo es ser un marco rápido, sencillo y muy extensible. Está diseñado para permitir RAD (Rapid Application Development), ayudará a poner en marcha su proyecto, empezar a codificar sus ideas en cuestión de minutos con la curva de aprendizaje mínima.
Thin marco PHP es adecuado para los desarrolladores web que quieren un marco sólido para iniciar sus proyectos, pero no quieren demasiadas dependencias. El código fuente está disponible para su descarga, es fácil de leer y ampliar.

Primeros pasos

Thin marco PHP es pequeño (menos de 50 KB comprimido), tiene menos clases que otras estructuras y de las bibliotecas independientes (excluidos núcleo vista lib - Smarty). Incorpora un montón de características útiles y mejores prácticas para ayudarle en el proceso de desarrollo web.

Características:

  • MVC (Model-View-Controller), OOP
  • RAD: download, unzip and start coding your ideas
  • URL routing to the controllers
  • Multi languages, i18n support
  • Log messages
  • Extension (plugin) system
  • Auto generate code (DB tables to VO (value object) classes)
  • Code is optimized: cache URI routes, minify js, css files, etc.
  • OAuth signin using: Google, Facebook, Twitter, etc.

Soporta:

  • Data-access layer: PDO (Mysql, SQLite...)
  • View layer (Template engine): Smarty - puede cambiar a usar su buscador favorito.
  • Caching: APC, Memcache
  • Apache, nginx
  • jQuery

Más:

  • Easy to apply the framework to most Website Templates
  • Validar al instante (ajax), both client side and server side
  • Sanitize input data
  • Anti flooding
  • Minify, compress and cache js, css files
  • Prevent form resubmission, remote Post... with form token
  • Cambiar de vista diferentes para: themes, languages...
  • Built-in extensions: authentication, captcha, twitter, editor, wiki, code highlighter
  • Authentication extension supports OAuth signin using: Google, Facebook, Twitter...
Link al sitio oficial deThinPHP

    2011-03-27

    NotORM una alternativa a Doctrine 2, cuales son las ventajas..

    Me encontré una alternativa a Doctrine que parece tener ciertas ventajas, como permite cache en session de las consulta para cada usuario. El paquete es muy pequeño, no requiere una configuración tan complejas, Requiere PHP 5.2, etc..
    NotORM utiliza PDO y fue probado en MySQL, SQLite, PostgreSQL, MS SQL y Oracle.

    Video Demo de Doctrine 2 Vs NotORM

    Rasones de porque Doctrine 2 NO..
    1. Depende de Symfony (sólo la secuencia de comandos doctrine.php)
    2. Requiere que se especifique un proxy si ni siquiera utilizarlo
    3. Error en la anotación o sintaxis; no causa ningún error, complicando la depuracion.
    4. Nueva columna se añade al final de la tabla
    5. Una consulta para cada iteración del bucle (puede ser resuelto por extensión Paginar)
    6. Se debe utilizar DQL de orden y límite
    7. Ninguna cláusula LIMIT en DQL
    8. Un dato es transferido repetidamente con DQL
    9. No hay forma de especificar otra columna en una relación M:N
    Esta pregunta se le preguntaron a uno de los desarrollodor de Doctrine y el respondí, link: Doctrine Lead Developer response

    Author: Jakub Vrána. It is allowed to re-publish only both videos together.

    2010-09-03

    PHP Data Objects – PDO

    PDO es una interface de acceso a datos que nos permite, mediante varios drivers, conectarnos a diferentes bases de datos. Olvídate de esto, esto, esto e incluso de esto otro, ahora solo debes preocuparte por PDO. Esta librería escrita en C viene activada por defecto desde PHP 5.1 por lo cual la podrás utilizar en la mayoría de los servidores que actualmente soportan PHP5.

    La conexión

    Para todos los ejemplos utilizaré MySQL, pero también podria utilizar cualquier otra de las bases de datos soportadas adaptando un poco el código que sigue:
    1
    $db = new PDO('driver:host=servidor;dbname=bd', user, pass);
    Y el ejemplo práctico:
    1
    $db = new PDO('mysql:host=localhost;dbname=pruebas', 'root', '');
    Ahora en $db tenemos una instancia de PDO_MySQL

    Primera consulta

    Para la primer consulta haremos uso de prepare, execute y fetch.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    require 'conexion.php';
     
    //Nos conectamos
    $db = new PDO('mysql:host=' . $servidor . ';dbname=' . $bd, $usuario, $contrasenia);
     
    //Preparamos la consulta para dejarla lista para su ejecución
    $consulta = $db->prepare('SELECT * FROM items');
     
    //Ejecutamos la consulta
    $consulta->execute();
     
    //Recorremos el set de resultados mostrando la información
    while($fila = $consulta->fetch())
    {
     echo $fila[0] . '  ' . $fila[1] . '<br />';
    }
     
    //Cerramos la conexión a la vez que destruimos nuestra instancia de PDO
    $db = null;

    Como verás no es nada complicado y es muy similar a lo que nos acostumbramos a hacer con las clásicas funciones mysql_.
    Con las funciones MySQL también debíamos validar estrictamente los parámetros de entrada para evitar inyecciones SQL. En este caso, PDO lo hará por nosotros siempre y cuando utilicemos alguna de las varias formas que nos provee para realizar consultas parametrizadas. Este es un ejemplo:
    1
    2
    3
    4
    5
    //Preparamos la consulta marcando donde irán los parametros con ?
    $consulta = $db->prepare('SELECT * FROM items WHERE id_item = ? OR id_item = ?');
     
    //Ejecutamos la consulta incluyendo los parámetros en el mismo orden en el que deben incluirse
    $consulta->execute(array(2, 4));
    El ejemplo anterior generará una consulta de la siguiente manera:
    1
    SELECT * FROM items WHERE id_item = '2' OR id_item = '4'
    Otra manera de hacer lo mismo:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $id = 6;
     
    //Esta vez utilizamos un nombre-clave para cada parámetro
    $consulta = $db->prepare('SELECT * FROM items WHERE id_item = :id');
     
    //Con dicho nombre-clave, agregamos el valor del parámetro
    $consulta->bindParam(':id', $id);
     
    //Y ejecutamos la consulta
    $consulta->execute();
    1
    SELECT * FROM items WHERE id_item = '6'
    Ahora bien, si no confían, intenten inyectar SQL concatenando alguna sentencia en la variable $id y verán los resultados ;-)

    Altas, Bajas y Modificaciones

    El mecanismo sigue siendo el mismo que en las consultas anteriores, preparar la consulta, agregar los parámetros y ejecutar.
    alta
    1
    2
    3
    4
    5
    6
    $item = $_POST['item'];
     
    $inserta = $db->prepare('INSERT INTO items (item) VALUES (:item)');
    $inserta->bindParam(':item', $item);
     
    $inserta->execute();
    baja
    1
    2
    3
    4
    5
    6
    $id = $_GET['id'];
     
    $borra = $db->prepare('DELETE FROM items WHERE id_item = :id');
    $borra->bindParam(':id', $id);
     
    $borra->execute();
    modificación
    1
    2
    3
    4
    5
    6
    7
    8
    $item = $_POST['item'];
    $id = $_POST['id'];
     
    $actualiza = $db->prepare('UPDATE items SET item = :item WHERE id_item = :id');
    $actualiza->bindParam(':item', $item);
    $actualiza->bindParam(':id', $id);
     
    $actualiza->execute();
    Y esto es todo por el momento, solo un primer acercamiento a PDO. Podés bajarte todos estos ejemplos y varios mas desde aquí. Para que funcionen debes contar con un servidor que soporte PHP5 con las librerías PDO_MySQL instaladas, debes crear una base de datos, ejecutar el fichero items.sql y editar el archivo conexion.php con los datos que correspondan.