Connaitre l’environnement d’exécution dans un DataFixture

Rapel : Le système de DataFixture proposé par Doctrine dans le framework Symfony2 offre la possibilité de créer des tâches initialisant le contenue d’une base de données. Cela permet lors du développement de recouvrer une base de données opérationnel en un minimum de temps et d’effort. Personnellement je m’en sert aussi pour initialiser une base de données destiné à passer sur un serveur de production.

Symfony 2 ne dispose pas de système de DataFixture contrairement à la version 1.x du framework. Il est cependant possible d’ajouter cette fonctionnalité (suivez le lien).

Fin du rappel !

A mon goût il manque une chose dans le système de DataFixture proposer. Comme la possibilité de connaître le type d’environnement dans le quel il s’exécute (dev, prod, …).
Il peut être utile d’avoir cette information si l’on veux différencier deux types de traitement dans une même classe. Dans un environnement de développement je zap certaine insertion en base de données et j’en ajoute d’autre afin d’avoir du contenue à traiter (tambouille perso !).

Pour récupérer le type d’environnement il suffit d’étendre la classe « SymfonyComponentDependencyInjectionContainerAware ».

Voir le code ci-dessous.

namespace WaldoWonderlandBundleDataFixturesORM;
use DoctrineCommonDataFixturesFixtureInterface;
use SymfonyComponentDependencyInjectionContainerAware;

class LoadAllMyWonderFullData extends ContainerAware implements FixtureInterface
{
    public function load(ObjectManager $manager)
    {
         $environnement = $this->container->getParameter('kernel.environment');
         [...]
    }
}

Tagués avec : ,
Publié dans Doctrine, PHP, Symfony2

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*