Caution: You are browsing the legacy symfony 1.x part of this website.

Cómo utilizar Propel 1.3

por Carl Vondrick

Empezando con Symfony 1.1, ahora es posible utilizar fácilmente Propel 1.3 en tu proyecto para aprovechar la ventaja de sus mejoras en cuanto a velocidad, implementación de conjuntos anidados (o estructuras arbóreas, del inglés nested set), piscina de instancias de objetos (pooling), entre otros. Lo más importante es que Propel 1.3 utiliza PDO (del inglés PHP Data Objects) en lugar de Creole como DBAL (Capa de Abstracción de Base de Datos), ofreciendo una significante mejora de rendimiento.

Instalar Propel 1.3 solo toma unos pocos minutos. Todo lo que debes hacer es instalar un plugin y modificar dos ficheros de configuración. Continúa leyendo para saber cómo.

  • Instalar el plugin Propel 1.3 del repositorio de Symfony:

    $ cd /path/to/project/root/
    $ svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/ plugins/sfPropelPlugin
    
  • Propel 1.3 utiliza un nuevo formato de conexión y por tanto debes actualizar databases.yml. Cambia config/databases.yml de la siguiente forma, haciendo los cambios que se ajusten a tu necesidad:

    dev:
      propel:
        param: 
          classname: DebugPDO
     
    all:
      propel:
        class: sfPropelDatabase
        param:
          dsn: mysql:dbname=mibasededatos;host=localhost 
          username: usuario
          password: contraseña
          encoding: utf8
          persistent: true
          pooling: false
          classname: PropelPDO

    Para actualizar tu DSN (del inglés datasource name), véase el manual PDO.

  • Se debe actualizar propel.ini para que coincida con la misma configuración. Busca las 3 primeras líneas de config/propel.ini y bórralas:

    propel.database            = mysql
    propel.database.createUrl  = mysql://[email protected]/
    propel.database.url        = mysql://[email protected]/miproyecto

    En su lugar, inserta las siguientes líneas:

    propel.database            = mysql
    propel.database.driver     = mysql
    propel.database.createUrl  = mysql://localhost/
    propel.database.url        = mysql:dbname=mibasededatos;host=localhost
    propel.database.user       = usuario
    propel.database.password   = contraseña
    propel.database.encoding   = utf8

    Verifica que propel.database.url coincida con el DSN del paso 2.

  • Limpia la caché interna de Symfony:

    $ symfony cache:clear
    
  • Propel 1.3 tiene un modelo de objeto mejorado, por tanto es necesario reconstruir los modelos:

    $ symfony propel:build-model
    

Si se trata de un nuevo proyecto, ¡felicidades porque acabas de configurar Propel 1.3! La sintaxis de schema.yml es exactamente la misma que en Propel 1.2. El nuevo API (del inglés Application Programming Interface) no es radicalmente diferente; de hecho, en su mayoría el API es exactamente el mismo.

Si estás actualizando un proyecto, es posible que te quede un poco de trabajo por delante, pero debes encontrar que la mayor parte de tu proyecto funcionará. Si utilizas transacciones o Creole directamente en tu código, tendrás que atualizarlo a PDO manualmente. El proyecto Propel tiene una útil guía de actualización que te guía a traves del proceso de actualización. Aún si se trata de un nuevo proyecto, puede que encuentres útil echarle un vistazo para aprender todas las nuevas características (o funcionalidades, del inglés features).

Symfony 1.1 desacopla su sistema núcleo, así que no podría ser más fácil utilizar cualquier capa ORM (mapeo objeto-relacional, del inglés, Object Relational Mapping) que desees. Si Propel no satisface tus necesidades, prueba sfDoctrinePlugin, que es una alternativa a Propel e iguala el rendimiento de Propel 1.3 (ya que igualmente utiliza PDO). Gracias a Symfony 1.1, los desarrolladores pueden disfrutar Propel 1.3 para mejoramiento del rendimiento o Propel 1.2 si requieren una estabilidad sólida como roca.