Archives du mot-clé PHP

Ajouter une étoile aux champs obligatoires de manière automatique

Plutôt que d’intégrer l’étoile d’un champ obligatoire dans son label, ça peut être sympa de l’ajouter dès que l’option « required » du validateur associé est à « true« .
Symfony vous permet facilement de le faire via les événements !
Continuer la lecture de Ajouter une étoile aux champs obligatoires de manière automatique 

Plus loin avec le sfDoctrineGuardPlugin : performances et astuce

Nous aborderons dans cet article 2 thèmes :

Continuer la lecture de Plus loin avec le sfDoctrineGuardPlugin : performances et astuce 

Logs des requêtes Doctrine, comment les activer/désactiver ?

Je cherchais l’information pour activer les logs des requêtes Doctrine lorsque je l’utilisais au travers d’une tâche, et non d’un module Symfony.
En fait c’est simple, il suffit juste de trouver soi-même l’information !

Dans l’ordre de priorité, Doctrine s’appuye d’abord sur un paramètre logging dans le database.yml, et s’il ne le trouve pas, il s’appuye sur la valeur du logging_enabled dans le settings.yml de votre application.

Toute l’information se trouve dans sfDoctrineDatabase qui instancie un profiler sfDoctrineConnectionProfiler.

database.yml :

dev:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn:      mysql:host=...;dbname=...
      username: ...
      password: ...
      logging: true

settings.yml :

dev:
  logging_enabled: false

Cache Doctrine avec SQLite

Doctrine propose de stocker en cache soit la requête DQL compilée (évite de générer la requête SQL à chaque appel)  ou bien carrément le résultat de la requête (évite de faire travailler la BDD + échanges réseau).

L’implémentation permet de se brancher sur n’importe quelle système de stockage : Memcache, APC, base de données, fichier, session, mémoire, choisissez celui qui vous convient.
Continuer la lecture de Cache Doctrine avec SQLite 

Installer Xdebug avec XAMPP

Un petit post pour expliquer l’installation de Xdebug avec Xampp.
C’est une choses très simple grâce à l’utilitaire PECL.
Pour info, le cas présent se fait sous Ubuntu 9.10 32 bits.
Mon installation de Xampp a été faite dans /opt/lampp.

1. Il faut installer Xampp (ma version est la 1.7.3a)
2. Il faut également installer le « Kit de développement » de Xampp (même version…)
3. Lancer la commande suivante :

sudo pecl install xdebug

Et hop, la librairie Xdebug est compilée !!
En gros, là, vous en êtes au même point que si vous aviez télécharger la DLL de Xdebug sous Windows, sauf que c’est un .so et non un .dll.

Le fichier compilé a été déposé dans « /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so ».

4. Ensuite, il faut dire à PHP que ce fichier existe ! Ca se passe dans le php.ini (j’utilise l’éditeur geany) :

sudo geany /opt/lampp/etc/php.ini

et ajouter les lignes

zend_extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

Voilà, c’est le minimum syndical, mais l’essentiel pour pouvoir faire du debugging pas à pas dans eclipse ou netbeans.

Un article intéressant à ce sujet : http://wiki.netbeans.org/HowToConfigureXDebug

Petit rappel de la division euclidienne et utilisation du modulus en PHP

Wikipédia nous rappel le théorème de la division euclidienne pour des entiers positifs :

« Pour tous entiers a et b positifs, avec b non nul, il existe un unique couple d’entiers q et r tel que la relation a=bq+r soit vérifiée, et tel que r soit compris entre 0 et a-1 au sens large. L’entier q est appelé quotient de la division de a par b, et l’entier r reste de cette division. »

En PHP et en programmation en général, il est courant d’utiliser la valeur du reste de la division euclidienne pour déterminer si un nombre est divisible par un autre, notamment pour savoir s’il est pair ou impair (divisible par 2) :

a = b*2 + r, a est divisible par 2 si le reste r vaut 0.

Le script PHP suivant vous aidera à faire vos petits essais :

$b=2;
for ($a=1;$a<=10;$a++)
{
    echo "\n[a = bq+r, 0 < r <= a-1] (a=$a, b=$b => q=".(int)($a / $b)."r=".($a % $b).") => ".$a .' = '.$b.'*'.(int)($a / $b).' + '.($a % $b);
}