Tag Archives

2 Articles
Initiation à PHING

Initiation à PHING

by Throrïn 1 Comment

Aujourd’hui, nous allons voir comment fonctionne PHING. Je vais donc vous montrer comment réaliser un script simple affichant un message sur notre terminal, puis copiant certains fichiers dans un autre dossier.

Pour les articles traitants de PHING, j’utilise le système Ubuntu. Vous devrez donc convertir certaines commandes en fonction de votre système.

Avant tout, il vous faut installer PHING. PHING est installable via PEAR. Vous devez donc, installer la Library PHP-PEAR. Pour ce faire, dans un terminal vous devrez juste taper :

sudo apt-get install php-pear

Ensuite, quand pear est installé, vous devrez taper les commandes suivantes pour pouvoir installer PHING :

sudo pear channel-discover pear.phing.info
sudo pear install phing/phing

Pour mettre à jour PHING vous aurez juste à taper

sudo pear update phing/phing

Pour vérifier l’installation de PHING, tapez juste ceci dans votre console : phing Et voici le retour : Buildfile: build.xml does not exist!.

Bien, maintenant que PHING est correctement installé, nous allons nous attaquer à notre projet.

Pour ce faire nous aurons besoin du fichier index.php contenant juste les lignes suivantes : Nous placerons ce fichier dans un dossier vide du nom de phing. Dans ce dossier nous allons aussi créer notre fichier build.xml contenant tout notre programme phing.

Le but de ce petit programme sera d’afficher un message et de copier ce fichier dans un nouveau dossier dans /var/www. Ce nouveau dossier aura le nom d’un projet saisit dans notre application.

Voici le script de notre application :

<?xml version="1.0" encoding="UTF-8"?>
<project name="TutoPHING" default="build">
    <propertyprompt propertyName="projet" defaultValue="projet"
        promptText="Entrez le nom de votre projet : " />
    <target name="build">
        <echo>Création du projet ${projet}</echo>
        <mkdir dir="/var/www/${projet}" />
        <echo>Copie du fichier index.php</echo>
        <copy file="index.php" tofile="/var/www/${projet}/index.php" 
              overwrite="true"/>
        <echo>Le programme est terminé</echo>
    </target>
</project>

Un projet est toujours contenu dans la balise <project>. Dedans on renseigne le nom de notre application ainsi que le target par défaut.

Si vous renseignez un target par défaut inexistant, PHING vous retournera une erreur.

Ensuite, vous l’aurez compris, la balise <target> correspond un peu à une fonction. Nous lui définissons un nom et nous pouvons aussi dire quels sont les targets nécessaires à son exécution.

Voilà ce qu’il y a à savoir sur l’architecture d’une application PHING. Pour plus de renseignements, je vous conseille d’aller voir là : documentation. Sinon posez vos questions.

Si nous lançons le programme, voici ce que ça nous retourne :

C’était qu’un bref aperçu de PHING, vous pouvez vous en servir pour contrôler les normes de codage de vos projets, générer simplement un nouveau projet à la manière de Zend Too, ou, tout simplement, la génération de Template PHP pour vos différentes classes.

J’espère que ce bref aperçu vous aura fait apprécier PHING.

Phing : PHing Is Not GNU make

by Throrïn 0 Comments

Au travail, j’ai découvert une extension PEAR pour PHP vraiment utile. Il s’agit de Phing (PHing Is Not GNU make). Phing est un projet servant à construire des projets ou à effectuer différentes étapes de façon automatique.

Pour résumer, C/C++ a son make, Linux a ses scripts bash, Windows a ses batch et PHP a Phing. Phing utilise le langage XML pour formater les scripts.

Je l’ai trouvé simple à prendre en main (en regardant la doc). Il intègre des solutions FTP, SQL (avec PDO), commandes systèmes et les règles de programmation de base (if, …). Pour vous donner une petite idée des performances de Phing, j’ai dû créer aujourd’hui un script permettant la création d’un SVN repository avec, la création sur le serveur ftp du dossier du projet (pour le site web) et pour finir à créer l’utilisateur et la base de données rattachée sur un autre serveur MySQL.

Je pense que j’aurais pu faire l’équivalent en scripts bash sur mon serveur Ubuntu mais on m’a demandé de l’effectuer avec ce langage. Des améliorations de ce script m’ont été demandées donc je vais bien voir ce qu’il est vraiment possible.

Voici justement un petit aperçu de script Phing (fournit dans le quickstart de la documentation).

<?xml version="1.0" encoding="UTF-8"?>
<project name="FooBar" default="dist">
    <!-- ============================================  -->   
    <!-- Target: prepare                               -->
    <!-- ============================================  -->
    <target name="prepare">
        <echo msg="Making directory ./build" />
        <mkdir dir="./build" />
    </target>



    <!-- ============================================  -->
    <!-- Target: build                                 -->
    <!-- ============================================  -->
    <target name="build" depends="prepare">
        <echo msg="Copying files to build directory..." />
        <echo msg="Copying ./about.php to ./build directory..." />
        <copy file="./about.php" tofile="./build/about.php" />
        <echo msg="Copying ./browsers.php to ./build directory..." />
        <copy file="./browsers.php" tofile="./build/browsers.php" />
        <echo msg="Copying ./contact.php to ./build directory..." />
        <copy file="./contact.php" tofile="./build/contact.php" />
    </target>



    <!-- ============================================  -->
    <!-- (DEFAULT)  Target: dist                       --> 
    <!-- ============================================  -->
    <target name="dist" depends="build">
        <echo msg="Creating archive..." />
        <tar destfile="./build/build.tar.gz" compression="gzip">
            <fileset dir="./build">
                <include name="*" />
            </fileset>
        </tar>
        <echo msg="Files copied and compressed in build directory OK!" />
    </target>
</project>

Et pour plus d’infos, je vous invite à aller sur leur site.