Domanda

Ho appena scoperto PHP-ActiveRecord non troppo tempo fa dopo aver lottato per quasi un mese per scrivere il mio ORM (sto testa dura del genere) e mi sono innamorato con esso. Avevo guardato Dottrina e Propel prima, ma ha deciso di scappare a causa della enorme complessità e la curva di apprendimento. Con AR, non ho l'ansia e difficoltà di apprendimento che ho avuto con gli altri.

Poco dopo, ho anche scoperto il framework symfony (ero anche cercando di fare il mio quadro da stratch dopo aver trovato altri framework eccessivamente gonfio). Tuttavia, ho un problema: il framework symfony utilizzando Dottrina e Propel come strato ORM / astrazione, fuori dalla scatola, senza alcuna documentazione su come modificarlo

.

Non ho in realtà ancora utilizzato symfony, ho letto il libro "Gentle Introduction". Lo strato ORM / astrazione sembra un po 'rimosso dal nucleo di symfony e sembra essere abbastanza facile da convertire tutto sopra. La domanda è ... è vero?

Qualcuno ha alcun tipo di esperienza con ActiveRecord con symfony o, anche, utilizzando qualcosa di diverso Dottrina / Propel con symfony?

È stato utile?

Soluzione

Vorrei riunire il codice ActiveRecord come plugin di Symfony. Si può leggere di più sulla creazione di Symfony plugin qui . Le basi sarebbero:

  • Crea una cartella plugins/sfActiveRecordPlugin. Inserire il codice record attivo in plugins/sfActiveRecordPlugin/lib/vendor.
  • mettere quello bootstrapping ActiveRecord bisogno sfActiveRecordPlugin/config/config.php all'interno. Questo codice otterrà eseguito ogni volta che viene creata un'istanza ProjectConfiguration. Se ActiveRecord ha il proprio caricatore automatico, probabilmente avrete bisogno di risolutezza che qui. Potrebbe anche essere necessario impostare Symfony di ignorare le classi ActiveRecord, questo viene fatto tramite autoload.yml.
  • Attiva il plugin nella classe ProjectConfiguration:

    class ProjectConfiguration extends sfProjectConfiguration
    {
      public function setup()
      {
        $this->enablePlugins(array(
          'sfActiveRecordPlugin',
        ));
      }
    }
    

    L'abilitazione plugin chiamano consente di disattivare tutti i plugin non espressamente abilitati. È anche possibile chiamare disablePlugins con i plugin che non si desidera caricare, se si preferisce.

Questo dovrebbe essere la maggior parte del lavoro.

Infine, vorrei vi esorto a dare Dottrina un altro colpo. La dottrina è un ORM molto potente e IMO è il migliore in circolazione. Inoltre, Symfony viene fornito con un sacco di cose specifiche dottrina che si sta andando a finire per riscrivere almeno alcuni dei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top