PHP

25
août
2010

__invoke est une nouvelle méthode magique introduite par PHP 5.3. En bref, elle permet d'appeler un objet comme si c'était une fonction. Cette fonctionnalité est utilisée dans plusieurs classes du ZF2 comme les filtres. Voici un petit exemple avec Zend\Filter\Boolean :

Libellés : ,

20
juil
2010

Oui, je sais c'est pas souvent qu'on doit faire ce genre d'opération, mais en travaillant avec MongoDB, je suis tombé sur la problématique suivante : dans MongoDB, l'identifiant des documents générés automatiquement se nomme _id. Pour conserver le nom de clé primaire que j'utilise habituellement avec des SGBDR classiques (id), je suis amené à devoir renommer une clé d'un tableau.

J'ai procédé ainsi :

// Crée une nouvelle clé avec le contenu de l'ancienne
$data['id'] = $data['_id'];
// Supprime l'ancienne
unset($data['_id']);

Pas super élégant, mais ça fonctionne. Vous avez mieux ?

Libellés :

04
jun
2010

En C#, il y une fonctionnalité que j'apprécie particuliérement. C'est la possibilité de définir des propriétés :

class MyClass
{
    protected string _myProperty;
 
    public string MyProperty
    {
        get
        {
            return _myProperty.ToUpper();
        }
        set
        {
            _myProperty = value;
        }
    }
}
Libellés : , ,

08
feb
2010

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

if (0 == $argc) {
  // ...
}
Libellés :

09
jan
2010

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 :

$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.


08
jan
2010

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 :

// Arrondi vers l'infini (méthode par défaut: PHP_ROUND_HALF_UP)
echo round(1.244, 2) . "\n"; // Affiche 1.24
echo round(1.246, 2) . "\n"; // Affiche 1.25
echo round(1.245, 2) . "\n"; // Affiche 1.25
echo round(-1.245, 2) . "\n"; // Affiche -1.25
 
// Arrondi vers zéro
echo round(1.245, 2, PHP_ROUND_HALF_DOWN) . "\n"; // Affiche 1.24
echo round(-1.245, 2, PHP_ROUND_HALF_DOWN) . "\n"; // Affiche -1.24
 
// Arrondi bancaire (arrondi au nombre pair le plus proche)
echo round(1.245, 2, PHP_ROUND_HALF_EVEN) . "\n"; // Affiche 1.24
echo round(1.235, 2, PHP_ROUND_HALF_EVEN) . "\n"; // Affiche 1.24
 
// Arrondi au nombre impair le plus proche
echo round(1.245, 2, PHP_ROUND_HALF_ODD) . "\n"; // Affiche 1.25
echo round(1.235, 2, PHP_ROUND_HALF_ODD) . "\n"; // Affiche 1.23
Libellés : ,

04
dec
2009

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 !

Libellés : , ,

21
oct
2009

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.

Libellés : , ,

13
oct
2009
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.


20
sep
2009

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.

Libellés : ,