Question

Je viens de PHP-ActiveRecord pas trop longtemps découvert après avoir lutté pendant près d'un mois pour écrire mon propre ORM (je suis dur comme ça dirigeais) et je suis tombé en amour avec elle. Je l'avais regardé Doctrine et Propel avant, mais a décidé de fuir en raison de la complexité pure et la courbe d'apprentissage. Avec AR, je n'ai pas la difficulté d'anxiété et d'apprendre que j'avais avec les autres.

Peu de temps après, je découvre aussi le framework Symfony (je aussi essayé de faire mon propre cadre de stratch après avoir trouvé d'autres cadres trop pléthorique). Cependant, j'ai une question: le cadre de l'aide symfony Doctrine et Propel comme couche ORM / abstraction de la boîte, sans documentation sur la façon de changer

.

Je n'ai pas fait encore utilisé symfony, j'ai lu le livre « introduction en douceur ». La ORM / couche d'abstraction semble un peu retiré du noyau de symfony et semble pour être assez facile à tout convertir plus. La question est ... est-il?

Quelqu'un at-il une sorte d'expérience en utilisant ActiveRecord avec symfony ou, même, en utilisant autre chose que Doctrine / Propel avec symfony?

Était-ce utile?

La solution

J'empaqueter le code ActiveRecord comme un plug-in Symfony. Vous pouvez en savoir plus sur la création de plugins Symfony ici . Les bases seraient:

  • Créer un dossier plugins/sfActiveRecordPlugin. Mettez le code d'enregistrement actif dans plugins/sfActiveRecordPlugin/lib/vendor.
  • Mettez ce bootstrapping ActiveRecord a besoin à l'intérieur sfActiveRecordPlugin/config/config.php. Ce code sont exécutées chaque fois qu'un ProjectConfiguration est instancié. Si ActiveRecord a son propre chargeur automatique, vous aurez probablement besoin de résoudre ici. Vous devrez peut-être définir Symfony d'ignorer les classes ActiveRecord, cela se fait via autoload.yml.
  • Activer votre plug-in dans votre classe ProjectConfiguration:

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

    L'appel plugins permettent désactivera les plug-ins ne sont pas explicitement activée. Vous pouvez également appeler disablePlugins avec les plug-ins que vous ne voulez pas chargé, si vous préférez.

Ce devrait être la plupart des travaux.

Enfin, je vous exhorte à donner un autre coup de feu Doctrine. Doctrine est un ORM très puissant et est l'OMI le meilleur sur le marché. En outre, Symfony est livré avec beaucoup de choses spécifique Doctrine que vous allez finir par réécrire au moins une partie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top