PHP

Ecrire une condition en PHP

Lorsque je parcoure le code du Zend Framework, je vois souvent des conditions écrites sous cette forme :

<?php
if (== $argc) {
  
// ...
}
?>

Etiquettes:

Tester la génération d'un PDF avec Zend_Test et Zend_Pdf

Une petite astuce pour tester un contrôleur qui génère du PDF. Pour s'assurer que c'est bien du PDF qui est envoyé, on peut utiliser Zend_Pdf qui est capable de charger un document existant :

<?php
$this
->dispatch('/moncontrolleur/1/pdf');
$this->assertResponseCode(200);
$this->assertHeaderContains('Content-type''application/pdf');
$pdf Zend_Pdf::parse($this->getResponse()->getBody());
$this->assertEquals('MonProgramme'$pdf->properties['Creator']);
?>

Si le PDF n'est pas correct, Zend_Pdf lancera une exception : Zend_Pdf_Exception: File is not a PDF. On peut également vérifier les propriétés du PDF et le nombre de pages. Par contre, on ne peut pas accéder au contenu du PDF pour vérifier le texte qu'il contient.

Arrondis avec MySQL et PHP

Ah les arrondis ! On pourrait penser que c'est très simple mais comme souvent le diable se cache dans les détails.

Prenons par exemple la méthode round de PHP. Elle nous propose 4 types d'arrondi :

<?php
// Arrondi vers l'infini (méthode par défaut: PHP_ROUND_HALF_UP)
echo round(1.2442) . "\n"// Affiche 1.24
echo round(1.2462) . "\n"// Affiche 1.25
echo round(1.2452) . "\n"// Affiche 1.25
echo round(-1.2452) . "\n"// Affiche -1.25

// Arrondi vers zéro
echo round(1.2452PHP_ROUND_HALF_DOWN) . "\n"// Affiche 1.24
echo round(-1.2452PHP_ROUND_HALF_DOWN) . "\n"// Affiche -1.24

// Arrondi bancaire (arrondi au nombre pair le plus proche)
echo round(1.2452PHP_ROUND_HALF_EVEN) . "\n"// Affiche 1.24
echo round(1.2352PHP_ROUND_HALF_EVEN) . "\n"// Affiche 1.24

// Arrondi au nombre impair le plus proche
echo round(1.2452PHP_ROUND_HALF_ODD) . "\n"// Affiche 1.25
echo round(1.2352PHP_ROUND_HALF_ODD) . "\n"// Affiche 1.23
?>

Etiquettes:

Subtilité de Zend_Date

Je viens de tomber sur un méchant bogue dans mon application. Il est du à une subtilité dans les formats ISO proposés par Zend_Date.

Le problème se situe au niveau des années. Zend_Date propose deux formats différents : yyyy et YYYY. Le premier, celui avec les y en minuscules fournit le résultat auquel on peut s'attendre, alors que le deuxième renvoie l'année dans lequel se situe la semaine !

Mettre en place une API avec Zend_Json_Server

Vous avez une jolie application Web et vous souhaitez fournir une API ? Rien de plus simple avec Zend_Json_Server. Ce composant du Zend Framework permet de mettre en place une API utilisant le protocole JSON-RPC.

Ajouter un menu à son site avec Zend_Navigation

Un menu créé avec Zend_Navigation

Ca fait un moment que je n'ai pas blogué, je vais me rattraper avec un petit tutoriel sur Zend_Navigation. Je vous propose de réaliser un menu à deux niveaux similaire à celui qu'on trouve par exemple sur le site de Libération, le javascript en moins.

Mongo DB, jour 1

Mongo DB est une base de donnée orientée documents. A la différence des bases de données traditionnelles qui stockent leurs données dans des tables, Mongo DB utilise des collections d'objet (au format JSON). L'avantage de cette disposition, c'est que les colonnes n'ont pas à être fixées à l'avance et que chaque objet dans une collection peut avoir ses propres colonnes. Une base Mongo DB ne nécessite donc pas de schéma.

Etiquettes:

Zend_Db_Table_Plugin

Ce week-end je m'apprêtait à développer un système de plugin pour Zend_Db_Table quand j'ai eu la présence d'esprit de consulter la feuille de route du ZF (http://framework.zend.com/roadmap). Bien m'en a pris car ce composant est justement prévu pour la prochaine version du framework (1.10). Il a même failli être intégré à la 1.9.

Livre sur Symfony

La couverture du livre

Ça y est, les vacances sont finies. 15 jours sans Internet, ça fait du bien. Comme d'habitude, j'en ai profité pour lire quelques bouquins. Celui dont je vais vous parler aujourd'hui est consacré au framework PHP Symfony.

Etiquettes:

Ah les jolies variables de vue

Je ne sais pas pour vous, mais moi je ne trouve pas ça particulièrement élégant de toujours devoir passer par $this pour accéder à mes variables de vues.

Heureusement, dans le bestiaire des fonctions PHP, on dispose d'une fonction nommée extract qui crée des variables à partir d'un tableau. En la combinant à la méthode getVars de Zend_View qui permet d'obtenir l'ensemble des variables assignées à une vue, on peut exporter ces dernières sous la forme de variables locales.

Pages

Subscribe to RSS - PHP