miércoles, diciembre 30, 2009
DHTMLX EN ACCION
miércoles, diciembre 09, 2009
Modelando con Doctrine Parte I
/* Archivo generarModels.php */ require_once(dirname(__FILE__) . '/Doctrine-1.2.0/lib/Doctrine.php'); spl_autoload_register(array('Doctrine', 'autoload')); /* Nos conectamos a la DB*/ $dsn = 'mysql:dbname=comercial;host=127.0.0.1'; $user='root'; $password='123456'; /* Conexion a postgre $dsn = 'pqsql:dbname=comercial;host=127.0.0.1'; $user='postgres'; $password='123456'; */ $dbh = new PDO($dsn, $user, $password); $conn = Doctrine_Manager::connection($dbh); /* Metodo que nos genera los modelos */ Doctrine_Core::generateModelsFromDb('carpetaDeModelos');
/** * Cliente * * This class has been auto-generated by the Doctrine ORM Framework * * @package ##PACKAGE## * @subpackage ##SUBPACKAGE## * @author ##NAME## <##EMAIL##> * @version SVN: $Id: Builder.php 6820 2009-11-30 17:27:49Z jwage $ */ require_once('generated/BaseCliente.php'); class Cliente extends BaseCliente { }
/* Archivo dqlTestDoctrine.php */ require_once('bootstrap.php')/*extremadamente importante*/ $q=Doctrine_Query::create() ->select('u.*') /*todos los campos*/ ->from('Cliente u'); /*selecionamos la clase Cliente*/ print_r($q->execute()->toArray()); /*nos muestra el resultado como un array*/
/* Archivo bootstrap.php */ require_once(dirname(__FILE__) . '/Doctrine-1.2.0/lib/Doctrine.php'); spl_autoload_register(array('Doctrine', 'autoload')) Doctrine::loadModels('carpetaDeModelos'); $dsn = 'mysql:dbname=comercial;host=127.0.0.1'; $user='root'; $password='123456'; $dbh = new PDO($dsn, $user, $password); $conn = Doctrine_Manager::connection($dbh);
- Cuando se encuentran claves primarias compuestas el modelo generado solo mapea una clave primaria, entonces hay que modificar a mano en el modelo generado colocando como clave primaria la clave que obvio Doctrine.
- Si están trabajando con PosgreSql y estas utilizando esquemas entonces tendrás que modificar en el modelo generado el nombre de la tabla mapeada anteponiendo el nombre del esquema.
sábado, diciembre 05, 2009
Instalando Doctrine 1.2
- Bajamos el Appserv 2.5.9.
- Ejecutamos el Appserv 2.5.9 (que nos instala apache, php y mysql).
- Verificamos que la version de PHP>=5.2.3+
- Habilitamos PDO(Php Data Objects), nos dirigimos a php.ini y añadimos las siguientes lineas:
- Reiniciamos el Servidor Apache.
- Bajamos Doctrine 1.2 de aquí.
- Descomprimimos Doctrine 1.2 en c:\appserv\www
extension=php_pdo.dll extension=php_pdo_pgsql.dll extension=php_pdo_mysql.dll
Para verificar la instalación creamos un archivo nombrandolo como bootstrap.php (c:\appserv\www\bootstrap.php)
/* En los siguiente post haremos referencia a este archivo bootstrap.php */ require_once(dirname(__FILE__) . '/Doctrine-1.2.0/lib/Doctrine.php'); spl_autoload_register(array('Doctrine', 'autoload')); $manager = Doctrine_Manager::getInstance();
Ahora que ya tenemos bootstrap.php procedemos a crear el archivo TestDoctrine.php (c:\appserv\www\TestDoctrine.php)
/* Probamos que doctrine se instalo correctamente */ require_once('bootstrap.php'); echo Doctrine_Core::getPath();Ahora ejecutamos el archivo TestDoctrine.php (http://localhost/TestDoctrine.php) y nos debe de mostrar la ruta de instalación de Doctrine. La cual significa que Doctrine se instalo satisfactoriamente.
martes, octubre 27, 2009
Doctrine ORM
En este post quiero hablar de un extraordinario ORM para PHP.
Me estoy refiriendo a Doctrine, los que vienen de .NET o Java me comprenderán.
Es que acaso existe la posibilidad de realizar sistemas con PHP, pues conocemos que PHP es un lenguaje bastante light enfocado para web site, principalmente.
Pero a medido que conozco Doctrine(object relational mapper) y Symfony(framework) puedo asegurar que si, es posible, con sus limitaciones pero posible. Si amigos no es tan descabellado.!!!!
Algunas cosas por la que elijo Doctrine son, entre otras, las siguientes:
- DQL algo similar a HQL de Hibernate.
- Zend Framework (Zend_Entity) se rindio ante Doctrine.
- Una extraordinaria comunidad de desarrolladores.
- Una documentación bastante completa a libre disponibilidad (free).
En fin, estoy muy emocionado por haber encontrado algo tan bien pensado que me facilito la vida enormemente en el desarrollo de una aplicación con capas cuyo cliente se desarrollo en JavaScript específicamente utilice DHTMLX cuya documentación también esta bastante extensa, luego hablaremos de estos componente Web UI.
Nota: Uno de los motivos por los que no posteo es precisamente mi ortografía y la vergüenza de cometer u ofender a algunos lectores espero su comprensión y desde luego la correcciones son bien acogidas.