Si comme moi vous aimez organiser vos projets symfony avec des plugins, vous aurez surement remarqué que ca peut rapidement devenir le bazar.

Voici une technique pour pouvoir séparer vos packages (plugins persos) et les plugins externes pour une meilleure visibilité.
Les plugins nous permettent de grouper les modèles, forms, filters mais aussi les bibliothèques (lib) pour nous aider à organiser nos projets.
Sur le papier, c'est très intéressant, mais symfony ne nous propose aucun moyen de séparer "nos" plugins (que nous appellerons packages) et les plugins "externes".
Très bien, faisons le nous-même :
La première chose à faire, c'est évidemment de créer le nouveau dossier dans la racine du projet.
L'arborescence racine devrait ressembler à ca :

Pour que notre projet sache où aller chercher nos packages, on va "cloner" la méthode qui active les plugins et la modifier selon nos besoin.
class ProjectConfiguration extends sfProjectConfiguration {
public function enablePackages($packages)
{
if (!is_array($packages))
{
if (func_num_args() > 1)
{
$packages = func_get_args();
}
else
{
$packages = array($packages);
}
}
foreach ($packages as $package)
{
$this->setPluginPath($package, sfConfig::get('sf_root_dir') . '/packages/' . $package);
}
$this->enablePlugins($packages);
}
class ProjectConfiguration extends sfProjectConfiguration {
public function setup()
{
$this->enablePlugins(
'sfDoctrinePlugin',
'sfFormExtraPlugin',
...
);
$this->enablePackages(
'mySuperPackage',
'anOtherPackage',
...
);
}
...
}
Avec ce nouveau comportement, de nouvelles conventions de codes sont logiquement de la partie : comme on change le suffixe, il faut aussi changer le nom de la classe de configuration du plugin : /packages/mySuperPackage/config/mySuperPackageConfiguration.class.php.
A voir aussi sur le même sujet:
Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:
Compte la Ferme du WebIdentifiez-vousInscrivez-vous |
Compte Facebook |
Compte Twitter
|