El usar PHP en el desarrollo web, brinda una potente ayuda. En la actualidad podemos encontrar distintos FrameWorks. Esta vez quiero compartir uno en particular que he escuchado bastante donde trabajo, Propel. Este ORM brinda una serie de características bastantes llamativas para ser usado en un desarrollo web ágil.
Para que el tema quede mejor explicado, se dividirá en dos partes, esta es la primera parte, la cual se centrará en la explicación de cómo instalar las dos bibliotecas y usarlas en el proyecto PHP, cómo generar las clases de Propel para trabajar con una base de datos MySQL, configurar e inicializar Propel para su página web y, por último, mostrar datos de la base de datos utilizando la libreria de Smarty.
El primer paso que tenemos que hacer es descargar e instalar la última versión de Propel. Para descargar la última versión de Propel ORM puede acceder a la página de descargas del proyecto y elegir cualquiera de las opciones que se adapte mejor a tu desarrollo.
Para usar el ORM Propel, no es necesario ejecutar algún instalador, sólo tienes que descomprimir el contenido del archivo en una ubicación. Antes de poder ejecutar el ORM Propel generador tendrás que:
A los efectos de demostración de este artículo vamos a utilizar una base de datos MySQL muy simple con un solo nombre de tabla de la gente con la siguiente estructura:
CREATE TABLE `people` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`age` int(3) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ;
El primer paso para usar Propel con una base de datos existente, es para generar el archivo schema.xml. Para eso tenemos que crear una carpeta en el disco donde almacenemos toda lo relacionado con Propel, como generar archivos (clases de om, archivos de configuración). Para mayor comodidad he creado mi carpeta PropelTest dentro de mi carpeta de propelgeneratorbin. Para generar el archivo schema.xml primero tenemos que crear un archivo build.properties, el cual se ha colocado dentro de la carpeta PropelTest que se ha creado. El archivo build.properties se ve así:
propel.project = PropelTest
# The Propel driver to use for generating SQL, etc.
propel.database = mysql
# This must be a PDO DSN
propel.database.url = mysql:dbname=PropelTest
propel.database.user = root
# propel.database.password =
Una vez que se tenga el archivo build.properties, puedes ejecutar el comando propel-gen. Recuerda que este archivo se encuentra en la carpeta propelgeneratorbin, esto lo tenemos que tener en cuenta al momento de ejecutar el siguiente comando:
propel-gen PropelTest reverse
El primer argumento del comando es la carpeta en la que tenemos el archivo build.properties. Si la configuración de Propel y Phing se hace correctamente, el comando anterior debería funcionar correctamente.
Una vez que se ejecuta con éxito el comando anterior deberías ver un nuevo archivo en la carpeta PropelTest, de nombre schema.xml:
Una vez tenemos el archivo schema.xml, podemos generar las clases del modelo que vamos a utilizar en su proyecto para trabajar con la base de datos. Con el fin de generar las clases que necesitamos para ejecutar el siguiente comando:
propel-gen PropelTest om
Si el comando se ha ejecutado con éxito, en la carpeta PropelTest debería ver una nueva carpeta llamada build, que también contiene una carpeta llamada classes. En la carpeta classes, debe encontrar otra carpeta que puedes usar en tu proyecto. El nombre de esta carpeta está dada por el valor propel.project en el archivo build.properties. En nuestro caso es nuevo PropelTest.
Por cada tabla en la base de datos, Propel crea 3 clases PHP:
1. Una clase del modelo (por ejemplo, personas), lo que representa una fila en la base de datos;
2. Una clase de pares (por ejemplo PeoplePeer), ofreciendo constantes estáticas y métodos principalmente para la compatibilidad con versiones anteriores de Propel;
3. Una clase de consulta (por ejemplo PeopleQuery), que se utiliza para operar en una tabla para recuperar y actualizar filas.
Una vez que hemos generado las clases del modelo, se debe generar un archivo de inicialización para el Framework Propel. Con el fin de generar nuestro archivo de inicialización, es necesario crear un archivo XML llamado runtime-conf.xml, el cual debería contener lo siguiente:
mysql
mysql:host=localhost;dbname=PropelTest
root
De acuerdo con la documentación de Propel, el atributo id para el elemento de origen de datos debe tener el mismo valor que el atributo de nombre del elemento de la base de datos de archivo schema.xml.
Una vez que hayas creado el archivo runtime-conf.xml puede ejecutar el siguiente comando:
propel-gen PropelTest convert-conf
Después de ejecutar este comando, si no has recibido ningún error, debería ver en la carpeta build una nueva carpeta llamada conf. En la nueva carpeta que debe encontrar su archivo de inicialización que en mi caso tiene el nombre PropelTest-conf.php.
Para utilizar Propel en mi proyecto PHP he creado dos carpetas adicionales en mi proyecto:
1. model – carpeta en la que he copiado el contenido de la carpeta de compilación. Si decides hacer lo mismo, en la carpeta model tendrás las clases y carpeta conf con su contenido.
2. propel – carpeta en la que he copiado el contenido de la carpeta runtimelib de la instalación de Propel.
El siguiente paso es la creación de un script de configuración para Propel, en el cual se incluyen todos los scripts PHP necesarios para acceder a la base de datos.
El script de instalación es muy simple y luce así:
Una vez generado el modelo de clases, utilizándolas y la interacción con la base de datos es bastante simple.
Con el fin de mostrar cómo ingresar, actualizar y eliminar una entrada de la tabla de la gente de nuestra base de datos, que acabo de crear un simple script PHP que hace todas las operaciones antes mencionadas. El Script es sólo para fines de demostración, estoy seguro de que para sus proyectos que llegaremos a utilizar las consultas más complejas.
El Script de la demostración, es el siguiente:
ID: ".$people->getId()."
Name: ".$people->getName()."
Age: ".$people->getAge()."
";
}
// create a new record
$me = new People();
$me->setName('Andrei');
$me->setAge(28);
$me->save(); // save the record to the table
PrintDetails($me, "Created:");
// update the entry
$people = PeopleQuery::create()->findPK(2); // find the people record with the Primary Key 1
if($people != null)
{
PrintDetails($me, "Found:");
$people->setName('Andrei Croitoriu');
$people->save();
PrintDetails($people, "Updated found entry to:");
$people->delete();
print "Deleted the entry!";
}
?>
Como se ha mencionado, esto es tan solo una parte 😉 En en próximo articulo, te mostrare como integrar las plantillas de Smarty.
¿Has notado aplicaciones desconocidas o un drenaje inesperado de la batería? Estos podrían ser indicios…
Saber cómo Restablecer un iPhone a su Estado de Fábrica es clave para solucionar problemas…
Motorola ha confirmado el lanzamiento de Moto G84 5G y Moto G54 5G en India,…
Recuerde WizardCoder, ¿el codificador de IA que cubrimos recientemente aquí en Windows Report? Nos jactamos…
Los investigadores han descubierto numerosos fallos de seguridad en el complemento WordPress Jupiter X Core…
Para solucionar problemas del sistema de PC con Windows, necesitará una herramienta dedicada Fortect es…