Tag Archives

3 Articles

Utiliser une Library Externe : Html2Pdf

Aujourd’hui nous allons voir comment implanter HTML2PDF à Zend. Cet article m’a été demandé par quelques personnes ces derniers jours et justement, je pensais en parler.

HTML2PDF ainsi que d’autres libraries PHP disponibles sur internet comme PHPThumb n’utilisent pas la convention PEAR. Leur inclusion ainsi que leur utilisation ne s’effectuera pas comme les libraries utilisant la convention PEAR.

Afin d’utiliser facilement la library html2pdf, nous allons passer par une aide d’action Zend, permettant de faire la transition (Vous pouvez faire une aide de vue ou autre chose utilisant la même logique).

Pour ce faire, nous allons créer une nouvelle classe PHP dans notre library perso App. Elle s’appellera App_Helper_Html2Pdf.

/**
 * Ligne nous permettant d'utiliser la classe HTML2PDF dans souci avec Zend
 */
require_once LIBRARY_PATH.'/html2pdf/html2pdf.class.php';

class App_Helper_Html2Pdf extends Zend_Controller_Action_Helper_Abstract{

    /**
     * @var Zend_Loader_PluginLoader
     */
    public $pluginLoader;

    /**
     * Constructeur: initialisee le chargeur de classes d'aides ou plugins
     *
     * @return void
     */
    public function __construct()
    {
        $this->pluginLoader = new Zend_Loader_PluginLoader();
    }

    /**
     * Constructeur
     *
     * @param string sens portrait ou landscape
     * @param string format A4, A5, ...
     * @param string langue : fr, en, it...
     * @param boolean $unicode TRUE means that the input text is unicode (default = true)
     * @param  String $encoding charset encoding; default is UTF-8
     * @param array marges par defaut, dans l'ordre (left, top, right, bottom)
     * @return null
     */
    public function instanceClass($sens = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8)){
        $html2pdf = new HTML2PDF($sens, $format, $langue, $unicode, $encoding, $marges);

        return $html2pdf;
    }

    /**
     * Fonction permettant d'appeler directement instanceClass
     */
    public function direct($sens = 'P', $format = 'A4', $langue='fr', $unicode=true, $encoding='UTF-8', $marges = array(5, 5, 5, 8)){
        return $this->instanceClass($sens, $format, $langue, $unicode, $encoding, $marges);
    }
}

Pour que Html2Pdf marche ici, nous utilisons, à la première ligne de notre fichier, un require_once pointant sur la classe principale. De là, nous sommes tranquille pour la suite, PHP va se débrouiller. Pour utiliser votre aide d’action, n’oubliez pas de rajouter la partie suivante dans votre Bootstrap.

protected function _initHelpers(){
    Zend_Controller_Action_HelperBroker::addPrefix('App_Helper');
}

Pour finir, pour récupérer votre objet PDF, vous n’aurez plus qu’à faire ceci dans un controller et vous pourrez manipuler votre objet Html2Pdf :

$html2pdf = $this->_helper->Html2Pdf('P','A4','fr', false, 'ISO-8859-15');

Maintenant vous savez comment rajouter une library externe n’utilisant pas la convention PEAR au sein d’un projet Zend. Malheureusement, avec l’arrivée de ZF2 et de PHP5.3 avec les namespaces, cela risque encore de changer.

Installation de PHP 5.2 dotdeb sur Ubuntu

Installation de PHP 5.2 dotdeb sur Ubuntu

by Throrïn 0 Comments

Aujourd’hui je vais vous faire résoudre un problème récurent que j’ai eu sur mes serveurs. L’installation de PHP 5.2.13 sur Ubuntu en utilisant les paquets dotdeb.

Pourquoi passer par ces paquets ? Et bien c’est plus simple que de compiler soit même PHP et ça évite d’oublier des dépendances. Le problème des paquets dotdeb c’est qu’ils sont prévus pour Debian or, Ubuntu utilise des Library avec quelquefois des noms différents. Je vais donc vous expliquer pas à pas l’installation de cette version.

Cette procédure ne marche plus à partir d’Ubuntu 10.04 LTS. D’un car les dépendances ne sont plus disponibles, de deux car une version plus récente de PHP est disponible.

Tout d’abord, il vous faut ajouter les sources APT pour installer tout un serveur LAMP @dotdeb dans le fichier /etc/apt/sources.list:

deb http://packages.dotdeb.org stable all 
deb-src http://packages.dotdeb.org stable all

Ensuite, il vous faudra installer apache :

sudo aptitude install apache2 apache2-mpm-prefork apache2-prefork-dev apache2-utils apache2.2-common

Ensuite, si nécessaire, installez le serveur MySQL qui va bien:

sudo aptitude install mysql-client mysql-client-5.1 mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1

Pour finir nous allons installer toutes les Library requises pour l’installation de PHP.

sudo aptitude install libtidy-dev curl libcurl4-openssl-dev libcurl3 libcurl3-gnutls zlib1g zlib1g-dev libxslt1-dev libzip-dev libzip1 libxml2 libsnmp-base libsnmp15 libxml2-dev libsnmp-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev zlib1g zlib1g-dev libfreetype6 libfreetype6-dev libbz2-dev libxpm4-dev libmcrypt-dev libmcrypt4

Voilà. Malgré tout, il nous faut installer 3 Library introuvables par aptitude mais nécessaires à l’installation des paquets dotdeb. Nous récupérons les fichiers nécessaires avec l’utilitaire wget.

32bits:

wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb
wget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/libt/libtool/libltdl3_1.5.26-1ubuntu1_i386.deb

64bits:

wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_amd64.deb
wget us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/libt/libtool/libltdl3_1.5.26-1ubuntu1_amd64.deb

Et nous installons les différents fichiers :

32bits:

sudo dpkg -i libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb
sudo dpkg -i libicu38_3.8-6ubuntu0.2_i386.deb
sudo dpkg -i libltdl3_1.5.26-1ubuntu1_i386.deb

64bits:

sudo dpkg -i libkrb53_1.6.dfsg.4~beta1-5ubuntu2_amd64.deb
sudo dpkg -i libicu38_3.8-6ubuntu0.2_amd64.deb
sudo dpkg -i libltdl3_1.5.26-1ubuntu1_amd64.deb

Et voilà, il n’y a plus qu’à installer PHP :

sudo apt-get update
sudo apt-get install php5

Rajoutez les extensions utiles :

sudo apt-get install php5-apc php5-curl php5-gd php5-mcrypt php5-mhash php-pear php5-mysql

Voilà, maintenant vous avez un serveur LAMP fonctionnel avec PHP 5.2.13.

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.