Archives pour la catégorie Développement

Symfony 2.1 et PostGreSQL

Pour utiliser le SGBD PostGreSQL avec symfony, il est nécessaire de faire quelques paramétrages.

# app/config/parameters.yml
parameters:
    database_driver:   pdo_pgsql

Mais cela ne suffit pas. Dès que vous voudrez utiliser la commande pour créer vos tables en base de donnée, vous serez susceptible de tomber sur l’erreur suivante :

[Doctrine\DBAL\DBALException]                                                                          
  Unknown database type point requested, Doctrine\DBAL\Platforms\PostgreSqlPlatform may not support it.

PostGreSQL propose des types de variables qui nécessite de paramétrer pour qu’ils soient gérer par Doctrine.

# app/config/config.yml
doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        mapping_types:
            enum:  string
            point: string

Ceci est une solution mais ce n’est pas la seule. De plus, les types ‘enum’ et ‘point’ ne m’ont pas été nécessaire pour mon projet actuel. J’ai donc passé l’erreur en les définissant comme ‘string’. Si vous, de votre côté, vous avez vraiment besoin d’utiliser ces types, il sera nécessaire de se documenter sur le site officiel de Doctrine et/ou de symfony.

1ere contribution Open source

Participer d’une façon ou d’une autre à un projet Open Source me paraissait plutôt lointain de mon niveau. Alors que non, chacun peut contribuer à son niveau. Le simple fait de s’intéresser ou s’exprimer sur un forum ou lors de conférence, peut être considérer comme une forme de contribution.

J’ai voulu testé atoum et m’en servir sur symfony 2. A partir de là, RTFM et je m’aperçois qu’une partie de la doc n’était pas à jour. Ici je me suis dit que compléter ce manque pourrait être ma première contribution.

Après avoir pris contact avec l’auteur du framework, il me dirige vers Renaud LITTOLFF. Superbe accueil, très ouvert et à l’écoute mais aussi exigeant (ce qui fait une doc de qualité). Quelques retours ont été nécessaire mais rien de bien méchant.

http://docs.atoum.org/

Au final, contribuer c’est plutôt fun et intéressant. Vous travaillez avec des personnes forcément passionnés et ça, c’est très sympa.

 

Initiation à Atoum

Présentation

Atoum est un framework de test unitaire, dont le plus connu est PHPunit, pour le langage PHP créé par Frédéric Hardy. Nous allons voir comment installer et utiliser Atoum à travers un mini tuto afin de prendre en main l’outil et de vous donner la documentation existante disponible sur Internet.

Installation

NB : Ne sera disponible que les grandes lignes pour l’installation et le paramétrage d’Apache et ne traiterai donc pas des différents environnement (windows ou linux)

Vous avez 2 possibilités pour installer Atoum, soit vous prenez les sources, soit vous prenez seulement le fichier mageekguy.atoum.phar. Nous verrons essentiellement l’utilisation du fichier *.phar.

Initiation

Nous allons voir comment fonctionne Atoum rapidement avec une classe, sa classe test et Atoum même.

Une classe Horloge

Voici arborescence du tuto :

monprojet/
monprojet/mageekguy.atoum.phar
monprojet/classe/Horloge.class.php
monprojet/tests/units/Horloge.php

Dans ce mini tuto, nous allons faire une classe Horloge qui aura heure, minute et seconde en attribut avec une méthode qui sera le constructeur pour commencer. Ensuite, fait un getteur simple comme getHour() par exemple.

Passons au test

A savoir, il sera nécessaire de préciser la classe, le chemin d’Atoum, le namespace mais aussi le namespace utilisé (voir dans les fichiers joints).

Lancer le test en ligne de commande

En étant à la racine du tuto, lancer la commande suivante :

php tests/units/Horloge.php

Voir le fichier capture_ecran_test1, vous devriez avoir quelque chose de similaire.

Couverture du code

Sur l’image capture_ecran_test1, on peut voir la ligne :

> Code coverage value: 40.00%

Ceci est la couverture de code de votre classe, ce que la classe de test à passer en revu pour faire ses tests. Pour avoir le taux de couverture de code, il est nécessaire d’installer xdebug et de paramétrer celui-ci.

Paramétrage de Xdebug

Le paramétrage ci dessous est aussi bien nécessaire sur linux que sur windows dans le php.ini, cependant, il sera nécessaire de les adaptrer

zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.remote_enable=On
xdebug.remote_log=/var/log/xdebug.log
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.coverage_enable=1

fichiers testatoum

 

Symfony 2.1 avec Composer

La version 2.1 de Symfony est passé en version stable. Qu’est ce qu’il y a de nouveau ? Ce qui est essentiel, c’est surtout l’utilisation de Composer, un gestionnaire de librairie (ou de bibliothèque).

Téléchargement de Symfony 2.1 et de Composer

Pour les utilisateurs de Symfony, l’url #1 est Symfony.com, évidement. Perso, je télécharge la version « 2.1 RC without vendor ». Ce qui se résume à récupérer l’arborescence d’un projet SF 2.1 sans les différentes classes. Je préfère le faire à la main avec mon petit terminal.

Une fois que votre répertoire de projet est opérationnel, installer Composer avec la commande suivante :

curl -s http://getcomposer.org/installer | php

Maintenant que vous avez Composer, rapatrier les différentes classes que propose Symfony.

php composer.phar install

Installation d’autres Bundles

Ouvrez le fichier composer.json, ajouter votre bundle et lancer la commande pour charger ce nouveau bundle. Ne vous souciez plus des dépendances, elles seront géré par Composer.