Archives pour 'symfony'
1 juin 2009
Dans le cadre de mon boulot, voici une petite tâche Symfony (1.2), développée dans le but de vous afficher une liste de tous les modules/actions ainsi que les credentials symfony associés.
J’ai fait ça rapidement mais cela semble pas trop mal marcher. La sortie vous indique également les droits correspondants aux modules associés à vos applications. Toutefois, seul les modules activés dans tous les environnements (la section all de settings.yml) seront découverts. Cela peut être utile pour découvrir les actions non protégés et prévenir le « url hacking ».

Pour la faire fonctionner, il suffit de déposer le fichier php contenu dans le zip attaché à cet article dans le repertoire lib/task de votre projet Symfony 1.2 et l’appeler en ligne de commande.
credentialMapTask.class.php
Dans Info et autres geekeries | 2 commentaires | Tags : pmsipilot > symfony > symfony 1.2
17 avril 2009
Je viens de signaler les plugins Symfony que j’utilise. Cette fonction est disponible depuis peu sur la site de symfony et peine à, disons, trouver son public. Pourtant, malgré le peu de votes à ce jour, je trouve que cela permet déjà de dégager les très bon plugins. J’invite donc tous les utilisateurs de plugin à indiquer ceux qu’ils utilisent.
Remarquez que ce système ne me flatte guère car le seul plugin que j’ai libéré n’a reçu qu’un vote …. le mien ! ;-) (pourtant il est bien)
Dans Info et autres geekeries | Un commentaire | Tags : plugin symfony > symfony
20 février 2009
Si vous n’avez pas donné votre avis, je vous invite à le faire : http://symfony.uservoice.com/pages/symfony

Personnellement, je ne connaissais pas ce système et je le trouve franchement épatant pour avoir du feedback sur un projet.
Dans Info et autres geekeries | Un commentaire | Tags : symfony > symfony 1.3 > uservoice
17 février 2009

Je travaille avec Symfony depuis la version 0.6.3, le framework a énormément évolué depuis en prenant un virage résolument professionnel. A vrai dire, je suis un peu bluffé par l’endurance de la « core team », qui, à peine la 1.2 sortie, embraille sur la 1.3.
Lire la suite »
Dans Info et autres geekeries | 9 commentaires | Tags : php > php5 > symfony > symfony 1.2
16 janvier 2009
Le système d’évènements de Symfony est une avancée particulièrement intéressante dans le framework. Toutefois, la documentation officielle est un peu spartiate sur le domaine. Voici donc un exemple pratique plus didactique pour utiliser les évènements.
Le système d’évènement de Symfony est basé sur le motif de programmation observer qui est un grand classique du genre.
Tout d’abord, il faut enregistrer le listener. On peut le faire à peu près n’importe ou, par exemple dans le preExecute du code d’un contrôleur, ou plus globalement dans le fichier config/ProjectConfiguration.class.php qui va gérer la configuration globale de votre projet.
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
// listener
if (!sfConfig::get('already_event_connected', false))
{
$this->getEventDispatcher()->connect('a.name', 'aclass::dosomething');
sfConfig::set('already_event_connected', true);
}
}
}
Ce code vous assure que le listener sera enregistré une unique fois. En effet, si il est enregistré deux fois, a chaque notification il sera exécuté deux fois ….
Ensuite, n’importe ou dans votre code, vous pouvez « lancer » cet évènement. Par exemple, dans le code d’un contrôleur.
// notification
sfContext::getInstance()->getEventDispatcher()->notify(new sfEvent(get_class($this), 'a.name',
array(
'a_var' => $foo,
'another_var' => $bar,
)));
La fonction de callback, ici une méthode statique, récupère un objet sfEvent en paramètre. Via ce dernier, on a également accès aux variables passées lors de la notification de l’évènement.
// dans la classe aclass
public static function dosomething (sfEvent $event)
{
$foo = $event['a_var'];
$bar = $event['another_var'];
// code
}
Et voilà, à vous de jouer.
Dans Info et autres geekeries | Un commentaire | Tags : php > php5 > symfony > symfony 1.2
6 janvier 2009
Symfony va stocker les informations de l’utilisateur courant dans un cookie de session avec / comme chemin. Si vous avez plusieurs applications symfony sur le même serveur et si celles ci sont gérées via des alias apache et non des virtual host, cela peut poser problème. En effet, une fois loggué sur une application, vous pouvez naviguer sur une autre avec tous les crédentials et autre variables de session définies sur cette première application.
Pour changer cela, voici comment je procède. Il faut simplement ajouter un fichier config/factories.yml et y insérer les lignes suivantes :
all:
storage:
class: sfSessionStorage
param:
session_cookie_path: <?php echoln(dirname($_SERVER['SCRIPT_NAME'])); ?>
Dans Info et autres geekeries | 4 commentaires | Tags : factories.yml > symfony > symfony 1.2
2 décembre 2008
Pour info, j’ai packagé un petit helper Symfony pour le dépot de plugins du projet. Il permet simplement de faire des liens entre applications d’un même projet. Il est compatible Symfony 1.2 uniquement.
Merci de vos retours si vous rencontrez des soucis avec ce helper.
http://www.symfony-project.org/plugins/omCrossAppUrlPlugin
Dans Info et autres geekeries | 2 commentaires | Tags : php > php5 > plugin symfony > symfony > symfony 1.2
10 novembre 2008
Après une première tentative peu concluante, voici un autre helper permettant de faire des liens entre différentes applications dans Symfony 1.2.
<?php
/**
* @author Olivier Mansour
*/
/**
* return an url for a given symfony application and an internal url
*
* @author Olivier Mansour
*
* @param string $appname
* @param string $url
* @param boolean $absolute
* @param string $env
* @param boolean $debug
* @return string
*/
function cross_app_url_for($appname, $url, $absolute = 'false', $env = null, $debug = 'false')
{
$initial_app = sfContext::getInstance()->getConfiguration()->getApplication();
$initial_web_controler = basename(sfContext::getInstance()->getRequest()->getScriptName());
// get the environment
if (is_null($env))
{
$env = sfContext::getInstance()->getConfiguration()->getEnvironment();
}
// context creation
if (!sfContext::hasInstance($appname))
{
$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($appname, $env, $debug), $appname);
}
else
{
$context = sfContext::getInstance($appname);
}
$web_url = $context->getController()->genUrl($url, $absolute);
sfContext::switchTo($initial_app); // usefull ?
unset($context);
//remove initial web controler
// genUrl use $this->context->getRequest()->getScriptName();, its a call to $_SERVER
// so I need this (sort of) hack
$script_name = $appname;
if (($env != 'prod') and $env)
{
$script_name.='_'.$env;
}
$script_name.='.php';
// check if this file exist
if (!file_exists(sfConfig::get('sf_web_dir').DIRECTORY_SEPARATOR.$script_name))
throw new sfException('can t find '.$script_name.' in the web directory');
$web_url = str_replace ($initial_web_controler, $script_name, $web_url);
return $web_url;
}
Pour l’utiliser, c’est à peu près comme url_for :
<?php echo cross_app_url_for('front' , 'module/action?id=5&tmp=ok#raoul'); ?>
<?php echo cross_app_url_for('front' , '@route'); ?>
Jusqu’ici ça marche (Symfony 1.2 est en cours de développement, l’API peut encore un peu changer, attention) ! N’hésitez pas à mettre un commentaire si vous avez un retour.
Dans Info et autres geekeries | 8 commentaires | Tags : cross app links > php > php5 > symfony > symfony 1.2
3 novembre 2008
J’ai participé à des projets de développement informatique utilisant massivement le générateur d’admin de Symfony. Depuis qu’il existe je l’ai toujours trouvé vraiment pratique, en particulier depuis que le système de plugin existe et permet de facilement fabriquer et diffuser son propre thème (c.a.d. son propre moteur) pour ce générateur. Quelle classe de faire sortir des dizaines d’écrans de gestion de données efficaces et fonctionnels en quelques jours.
Et bien l’équipe de Symfony vient de rehéditer leur performance en sortant un tout nouvel « admin générator » avec pleins de trusc super dedans et utilisant complètement la nouvelle architecture de Symfony !
http://www.symfony-project.org/blog/2008/10/31/new-in-symfony-1-2-the-admin-generator
http://www.symfony-project.org/book/1_2/14-Generators
Dans Info et autres geekeries | 4 commentaires | Tags : symfony
8 octobre 2008
Le framework Symfony vous propose maintenant de tester l’intérêt de vos tests unitaires sous l’angle de la couverture de code en utilisant une fonction de xdebug. C’est un test de tests en quelque sorte ! Il vous indiquera si vous avez bien testé toutes les méthodes de vos classes et si vos tests envisagent tous les effets de bord possibles.
Je ne l’ai pas encore essayé mais je trouve cet ajout excessivemement pertinent dans le cadre de la professionalisation du développement avec PHP et du « test driven development » . Bravo donc à Symfony !
Dans Info et autres geekeries | Aucun commentaire | Tags : couverture de code > symfony > tests unitaires