Kamelot Blog

Aller au contenu | Aller au menu | Aller à la recherche

mardi 19 mai 2009

mar
19
mai '09

Orientation politique : dites moi pour qui voter.

Comme les élections de l'année passée, j'ai fait le test "Pour quoi voter ?" (Ooops lapsus révélateur) le test "Pour qui voter ?"

Résultat :

Une fois de plus les résultats montrent que quand on choisi en fonction des "programmes",... ils disent tous la même chose sur les questions majeures.

Reste alors à choisir sur base de quoi ?

Je me demande combien de personne vont voter en ayant lu le programme de la personne ou de son parti...

Moi ce qui me fait peur c'est que je sais plus pour qui je ne veux absolument pas voter que pour qui je veux voter.

La fois précédente j'avais


Je porte mon soutien (par ordre alphabétique) à

mar
19
mai '09

PHP Scan : Exif

Plusieurs formats d'images peuvent contenir des meta données. Entre autres, on a IPTC et Exif

J'ai déjà parlé de ceux ci dans un post sur Xnview et Flickr

Pour EXIF, on a PECL::Exif et pour IPTC on utilisera GD:iptcparse ou Pear::Image_IPTC

Deux petits exemples.

EXIF

<?php
echo "test1.jpg:<br />\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
echo $exif===false ? "Aucun en-tête de donnés n'a été trouvé.<br />\n" : "L'image contient des en-têtes<br />\n";
 
$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg:<br />\n";
foreach ($exif as $key => $section) {
   foreach ($section as $name => $val) {
       echo "$key.$name: $val<br />\n";
   }
}
?>

IPTC

[php]
<?php
$size = getimagesize('./test.jpg', $info);
if(isset($info['APP13']))
{
    $iptc = iptcparse($info['APP13']);
    var_dump($iptc);
}
?>

Bonus : exifTool, rien à voir avec php mais toujours bon à connaitre.

mar
19
mai '09

PHP Scan : Reflexion

Reflexion est une nouveauté de PHP 5. C'est un outil de développement plus que de production.

Ca permet d'aller plus loin que get_loaded_extensions(), get_extension_funcs(), get_defined_functions(), get_defined_vars(),... On donne au constructeur un nom de classe, d'interface, de fonction et de méthode ou bien encore d'extension et il fourni une série de méthodes pour récupérer des informations telles que le nom, le fichier où elle est déclarée, le numéro de ligne de début et de fin dans le fichier, les commentaires phpDoc, les éventuelles variables statiques, l'éventuelle ''Closure'', les références, les paramètres demandés, ...

La doc présente comme ceci :

PHP 5 introduit API de réflexion complète qui permet de faire du reverse-engineering sur les classes, les interfaces, les fonctions et les méthodes tout comme les extensions. L'API de réflexion permet également d'obtenir les commentaires de la documentation pour les fonctions, les classes et les méthodes.

On dispose d'une série de classes qu'on utilise de la sorte

[php]
<?php
 $reflexionDeMaFonction = new ReflectionFunction('MaFonction');
?>

Et là on peut utiliser l'objet $reflexionDeMaFonction, on va faire appel à une série de méthodes pour obtenir les informations sur la fonction.

[php]
<?php
    var_export $reflexionDeMaFonction->isInternal () ? 'internal' 'user-defined');
    var_export $reflexionDeMaFonction->getName ());
    var_export $reflexionDeMaFonction->getFileName ());
    var_export $reflexionDeMaFonction->getStartLine ());
    var_export $reflexionDeMaFonction->getEndline ());
?>

Notez qu'on peut aller jusqu'à récupérer les commentaires phpDoc !

[php]
<?php    var_export $reflexionDeMaFonction->getDocComment ());
?>

Ca c'était pour les fonctions. on a aussi

  • La classe ReflectionParameter pour les paramètres des fonctions ou des méthodes.
  • La classe ReflectionClass pour les classes et les interfaces.
  • La classe ReflectionException pour les Exception.
  • La classe ReflectionObject pour les objets.
  • La classe ReflectionMethod pour les méthodes des classes.
  • La classe ReflectionProperty pour les propriétés des classes.
  • La classe ReflectionExtension les extensions.

Il y a même la possibilité d'étendre ces classes pour faire votre propre reflexion.

Regardez l'article complet pour avoir un exemple sur une fonction maison, sur array_reverse et sur Zend_log. L'output est dans le premier commentaire.

à lire aussi

Lire la suite...

Tags