Twig : insérer un morceau de template uniquement en mode debug

Dans vos template Twig il peut vous arriver de vouloir insérer certains éléments uniquement en phase de debug (exemple : du code javascript pour remplir un formulaire de paiement avec des données de test).

Voici donc comment faire :

{% if app.debug %}
<!-- ceci ne sera visible qu'en debug -->
{% endif %}

Ajouter tous les fichiers sur svn

Voici la ligne de commande permettant d’ajouter automatiquement tous les nouveau fichiers de votre repository :

svn st | grep ? | cut -c 8- | xargs svn add

Php : aider l’autocompletion des IDE

L’un des défauts du développement PHP est l’absence, parfois, d’auto-complétion dans nos IDE notamment lors de manipulation d’objet. En effet le typage dynamique de PHP empêche nos fidèles IDE de pourvoir déterminer correctement le type de la variable que nous manipulons et donc de déduire les méthodes et autres membres de classe à nous afficher.

Néanmoins une solution existe au moins pour NetBeans (mais il me semble que tous les IDE récent doivent supporter cette fonction). Pour aider l’IDE il suffit ainsi de lui indiquer via la syntaxe PHPDoc le type de notre variable :

/* @var $maVar MaClasse */

De cette façon, vous disposerez de l’auto-complétion sur votre variable $maVar.

Happy Coding !

Magento : astuce de chemin des templates dans l’administration

Lors de l’intégration d’un site Magento on peut être amené à devoir modifier les templates de l’administration. Pour cela il peut être intéressant d’afficher les chemins des différentes templates utilisées. Malheureusement, contrairement à la partie « Front » cette option ne peut être activée via l’interface de configuration.

Pour ce faire il convient donc d’aller directement dans la base de donnée (table « core_config_data ») et de chercher la ligne ayant pour valeur « dev/debug/template_hints » dans la colonne « path ». Une fois trouvée, il vous suffit de modifier la colonne « scope_id » de cette ligne en 0.

C# : de la bonne utilisation des « switch »

Pour avoir récemment eu la question voici un petit rappel quand à l’utilisation de switch en c#.

Tout d’abord il convient de rappeler le principe d’un switch. Un switch est un structure permettant de spécifier un comportement en fonction d’une variable donnée. Ainsi les deux codes suivant sont équivalent en comportement :

switch(maVariable)
{
    case 0:
        // Action à réaliser
        break;
    case 1:
        // Autre action à réaliser
        break;
    default:
        // Action par defaut
        break;
}
if(maVariable == 0)
{
    // Action à réaliser
}
else if(maVariable == 1)
{
    // Autre action à réaliser
}
else
{
    // Action par defaut
}

Ces 2 exemples ont le même comportement. Néanmoins il est important de noter qu’une structure en switch (figure 1) est plus performant qu’une structure en if (figure 2). Ceci s’explique aisément par le fait que lors d’un structure en if chacune des condition (les unes à prés les autres bien entendu) doivent être évalué jusqu’à trouvé une correspondance. Le switch utilisant un label celà permet un accés plus rapide.

Contraintes pour maVariable :

maVariable doit être uniquement d’un type primitif (ex : string, int); Si vous avez besoin d’utiliser d’autre type (ex : float, double,…) vous devez utiliser une structure en if (comme figure 2).
Les label de case doivent être une expression constante (ex : 42, « toto »). Si vous voulez calculer les valeurs ou utiliser des variables vous devez utiliser une structure en if (comme figure 2)
Chaque label de case doit être unique.
Chaque case contenant du code ne doit pas passer au case suivant implicitement (voir plus bas)
Il est à noter qu’un switch peut utiliser un type nullable dés l’instant qu’il respecte les règles ci-dessus.

int? maVariable = null
switch(maVariable)
{
    case null:
        Console.WriteLine("Aucune valeur");
        break;
    default:
        Console.WriteLine(maVariable);
        break;
}

Maintenant abordons le saut de case en case dans notre structure. Contrairement à d’autre langage le c# ne supporte pas le passage implicite d’un case à l’autre à moins que celui-ci soit vide. Concrètement ce code ne compilera pas :

switch(maVariable)
{
    case 0:
        Console.WriteLine(maVariable);
    case 1:
        Console.WriteLine("1");
}

Par contre celui-ci compilera correctement :

switch(maVariable)
{
    case 0:
        Console.WriteLine(maVariable);
        break;
    case 1:
    case 2:
        Console.WriteLine("1");
        break;
}

Mais alors comment obtenir le comportement souhaitez à la figure 4?

Tout simplement en spécifiant explicitement qu’il faut effectuer le saut par l’intermédiaire de l’instruction « goto ».

switch(maVariable)
{
    case 0:
        Console.WriteLine(maVariable);
        goto case 1;
    case 1:
        Console.WriteLine("1");
        goto default:
    default:
        Console.WriteLine("default");
        break;
}

Happy Coding!

Symfony : ouvrir par le code une connexion Doctrine

Lors d’un récent projet avec Symfony (1.4), je devais ouvrir une connexion doctrine  à la volée. Rien de bien compliqué jusque là.

Par contre afin de pouvoir logger et tracer correctement les actions sur cette connexion, il m’a fallu un peu chercher comment déclarer celle-ci auprès de Symfony afin de bénéficier des possibilités du framework.

Je vous livre donc tel quel le code permettant d’ouvrir une connexion par le code et de la déclarer auprès du gestionnaire de bdd intégré au framework.

<?php
$connexionString = '...';
$parameters = array(
     'name' => 'client',
     'dsn' => $connexionString
     );
$database = new sfDoctrineDatabase($parameters);
sfContext::getInstance()->getDatabaseManager()->setDatabase('client', $database);
?>

Nouveau Départ

Cher visiteur

Il y a quelques temps que je n’avais pas blogué, j’ai donc décidé de repartir d’ici sur un nouveau pied.

Plusieurs changements devrais s’opérer dans les prochains mois/semaines et ce blog servira à la fois à de référentiel technique et de suivi de mes aventures pour ma famille.

A Bientôt donc pour de nouvelles aventures !

[WPF] Un dataForm pour vos applications !

Pour tout ceux qui ont rêvé d’avoir le contrôle DataForm de silverlight dans leurs applications WPF, je me suis mis en tête cette semaine de le réaliser. C’est donc avec grand plaisir que je le partage avec vous via codeplex : http://wpfdataform.codeplex.com/
Bien entendu il s’agit d’une première version alors n’hésitez pas à me faire part de toute vos remarques et suggestions afin de l’améliorer.

Happy Coding!