SlideShare a Scribd company logo
1 of 44
Bienvenue!

AFUP : Conférence Supélec PHP




          Julien Pauli




          3 Mars 2009
L’AFUP

         Association Française des Utilisateurs de PHP

     Association 1901 but non lucratif
 ●


         Promouvoir PHP en France
     –

     ~250 membres
 ●



     Les activités :
 ●


         Rendez-vous
     –

         ApéroPHP
     –

         Forum PHP
     –




                                                         2
AFUP Supélec Mars 2009
Les intervenants

                    Julien PAULI
    Architecte expert certifié PHP & ZF
  ●

  ● Membre AFUP

  ● Auteur (Eyrolles)

  ● Responsable pôle formation PHP


    chez Anaska

    Conférencier & Consultant
  ●

  ● Contributeur PHP

  ● Contributeur ZendFramework




                                          3
AFUP Supélec Mars 2009
Les entreprises

                               ANASKA

     Société de formation en logiciels libres
 ●


         Depuis 2002
     –

     PHP très présent et très demandé
 ●


         5 niveaux de formations
     –

         Certification
     –

     Les logiciels libres en pleine expansion
 ●




                                                4
AFUP Supélec Mars 2009
Les entreprises

                                  ALTER-WAY

     Catalyseur de solutions open source
 ●



     Intégrateur logiciels libres
 ●


         Création 2006
     –

                      Hébergement
                  ●



                      Développement
                  ●



                      Formation
                  ●



                      Gestion de données
                  ●



                      Audit & conseil
                  ●




                                              5
AFUP Supélec Mars 2009
Logiciel libre


     Le logiciel libre est moins impacté par la crise
 ●



     Il est en constante évolution
 ●


             Contribuez
         –

     Le logiciel libre coûte moins cher que le
 ●


     propriétaire
             Il est plus souple à déployer
         –




                                                        6
AFUP Supélec Mars 2009
PHP en dates

                                    1995

     Rasmus Lerdorf crée Personnal Homepage Tools
 ●


     pour mettre à jour son CV en ligne
             La librairie ancêtre de PHP est toujours en ligne
         –

                      http://museum.php.net/
                  ●




                                                                 7
AFUP Supélec Mars 2009
PHP en dates

                                   1998

     Un groupe déjà important travaille autour de ce
 ●


     langage
             PHP 2 puis PHP 3 voient le jour
         –

             Déjà là : beaucoup de serveurs sont supportés
         –

             L'installation est très simple et légère
         –




                                                             8
AFUP Supélec Mars 2009
PHP en dates

                             1998-2000
     Zeev Suraski et Andi Gutmans réécrivent tout le
 ●


     coeur du langage
             Gestion de la mémoire anticipée
         –

             Nombreuses macros C
         –

             Le quot;Zend Enginequot; est né
         –

             Zend = Zeev + Andi
         –

     Un angouement international
 ●


             La magie de l'open source fonctionne
         –

     Un langage modulaire
 ●



     2000 : PHP4
 ●



                                                       9
AFUP Supélec Mars 2009
PHP en chiffre

                                   2004

     PHP 5
 ●


             Zend Engine 2 : réécriture complète
         –

             Modèle Objet abouti
         –

             Traitements XML simplifiés
         –

             SOAP et Web Services
         –

             Amélioration support MySQL
         –

             Des centaines de contributeurs au langage
         –




                                                         10
AFUP Supélec Mars 2009
PHP et le futur

               PHP 5.3 (quelque part en 2009 ?)
      Namespaces
  ●



      Accès au garbage collector
  ●



      Profiling Xslt
  ●



      Closures et fonctions anonymes
  ●



      Modèle objet amélioré et plus riche
  ●



      Opérateur quot;gotoquot;
  ●



      Meilleure gestion de l'I18n
  ●



      Phar (PHPArchive)
  ●




                                                  11
AFUP Supélec Mars 2009
PHP et le futur

                 PHP 6 (quelque part en 2078 ?)


      Tout le code est réécrit pour gérer Unicode
  ●




                                                    12
AFUP Supélec Mars 2009
PHP en chiffre




                            13
AFUP Supélec Mars 2009
PHP en chiffre




                            14
AFUP Supélec Mars 2009
PHP en chiffre




                            15
AFUP Supélec Mars 2009
Ils l'utilisent

      Yahoo
  ●



      Le Monde
  ●



      SkyRock                Ce n'est pas parce que ce n'est
  ●
                         ●


                              pas marqué .php à la fin du
      BNP Paribas
  ●

                              fichier, que ce n'est pas PHP qui
      Facebook
  ●
                              traite :-)
      Meetic
  ●



      Nokia
  ●



      TF1
  ●



      Alapage
  ●




                                                            16
AFUP Supélec Mars 2009
Un langage modulaire

      PHP est adopté car il est modulaire
  ●


             Le Zend Engine possède les fonctionnalités de base
         –

                      Que l'on active ou pas à la compilation
                  ●



             Le Zend Engine possède des connecteurs pour lui ajouter
         –
               des fonctionnalités
             Et il existe un gros dépôt de modules (PECL)
         –

                      Ecrits en C
                  ●



                      Open Source
                  ●



                      Branchés sur l'API du Zend Engine
                  ●



                      Rajoutent des fonctionnalités au langage
                  ●



                      Se chargent via des .so ou des .dll, très simplement
                  ●




                                                                             17
AFUP Supélec Mars 2009
Un langage modulaire

      PHP est adopté car il existe une communauté
  ●


       extrêmement importante autour
      On utilise PHP en entreprise certes mais …
  ●


             Beaucoup de projets écrits en PHP sont ouverts et libres
         –

                      Des moteurs de recherches
                  ●



                      Des ORM (Mapping Objet Relationnels)
                  ●



                      Des frameworks
                  ●



                      Des outils de testabilité logiciel
                  ●



                      Des outils métiers (mathématiques)
                  ●



                      ...
                  ●


                                http://pear.php.net
                            –

                                http://www.phpclasses.org
                            –




                                                                        18
AFUP Supélec Mars 2009
Manières d'utiliser PHP

      CLI
  ●




                Pas mal d'administrateurs l'utilisent
            –

                         Encore loin derrière Perl ou Python mais...
                     ●



                         Présent dans certaines box, certains décodeurs TV
                     ●



                Syntaxe proche du C agréable pour les admins
            –




                                                                             19
AFUP Supélec Mars 2009
Manières d'utiliser PHP

      PHP peut s'utiliser avec un serveur Web en CGI ou
  ●


       Fast-CGI
             Interface normalisé (Common Gateway Interface)
         –

             Ancêtre du Web Dynamique
         –

                      Ancêtre de PHP, qui a la base était une toute petite
                  ●


                       bibliothèque chargée en CGI

             Problématique de performance
         –




                                                                             20
AFUP Supélec Mars 2009
Manières d'utiliser PHP

      Module de serveur
  ●


             Module de serveur écrit en C
         –

             Très performant
         –

             L'utilisation majeure de PHP, 90%
         –




                                                 21
AFUP Supélec Mars 2009
Le Web client serveur




                                   22
AFUP Supélec Mars 2009
Le Web client serveur




           Clients                 Serveur




                                             23
AFUP Supélec Mars 2009
Fonctionnement global

      PHP tourne en tant que module Apache
  ●


             Historiquement Apache est très utilisé pour PHP
         –

             Apache reçoit une requête demandant du PHP
         –

             Il la passe à PHP qui est alors exécuté sur le serveur
         –

             Le résultat de cette exécution produit une sortie
         –

                      En général en HTML
                  ●



             Cette sortie est envoyée par Apache au client
         –

             Une page s'affiche
         –




                                                                      24
AFUP Supélec Mars 2009
Le serveur

      PHP tourne donc (très majoritairement) sur un
  ●


       serveur Web
      La renommée de PHP vient du fait qu'il supporte
  ●


        énormément de serveurs Web
      PHP est présent partout
  ●


             Apache (historiquement le plus utilisé)
         –

             Caudium
         –

             Lighttpd
         –

             Iplanet / Netscape (Sun)
         –

             IIS
         –




                                                        25
AFUP Supélec Mars 2009
La plateforme

      PHP tourne sous beaucoup de plateformes
  ●


             GNU/Linux (le plus utilisé, le plus performant)
         –

             Unix (BSD Familly)
         –

             Mac OS
         –

             Windows
         –

             Solaris
         –

             HP-Ux
         –

      Même si ce n'est pas parfait, PHP abstrait
 ●


      beaucoup la couche OS sous laquelle il tourne
             PHP se comporte sensiblement de la même manière
         –
               quelque soit le système sur lequel il tourne
                       De gros efforts sont sans arrêt fournis dans ce but
                  ●




                                                                             26
AFUP Supélec Mars 2009
Un langage proche du C

      PHP est le C du Web
  ●


              Sans la gestion de la mémoire
          –

              Sans typage fort
          –

              Sans tous les aspects quot;chiantsquot; du C
          –



      Un simple éditeur de texte suffit pour taper du PHP
 ●



      Un quot;simplequot; serveur Web suffit pour rendre une
 ●


      page totalement quot;dynamiquequot;




                                                        27
AFUP Supélec Mars 2009
Un langage très riche

      Le potentiel de PHP est vraiment inimaginable
  ●


              C'est ce qui en fait un langage pas si facile que ça après
          –
                tout
      PHP sait jouer avec XML
 ●



      PHP sait créer des processus (fork et signaux
 ●


      POSIX)
      PHP peut s'interfacer avec tout programme
 ●


      possédant des entrée/sortie
      PHP peut communiquer via des sockets quelque
 ●


      soit le protocole
      PHP peut ouvrir des fichiers et lancer des tâches
 ●


      externes
                                                                           28
AFUP Supélec Mars 2009
Un langage très riche

      PHP peut interagir avec la plupart des SGBD
  ●


             MySQL
         –

             PostgreSQL
         –

             Ingres
         –

             SQLServer
         –

             IBM / DB2
         –

             Oracle
         –




                                                    29
AFUP Supélec Mars 2009
Les autres langages

      PHP est massivement adopté car
  ●


             Sa syntaxe est proche du C
         –

             Sa syntaxe est très permissive
         –

                      Langage de script
                  ●



                      On ne s'embête pas 20h avant d'avoir du concrêt
                  ●



                      On ne s'occupe pas de la mémoire
                  ●



                      On ne s'occupe pas du typage
                  ●



             Il est très performant
         –

                      Pour un langage de script
                  ●



             Il est massivement supporté par les serveurs
         –

                      PHP est présent partout car Apache est présent partout
                  ●




                                                                           30
AFUP Supélec Mars 2009
Les autres langages

      PHP cohabite bien avec ses quot;concurrentsquot;
  ●


              Java
          –

              Python
          –

              Ruby (On Rail?)
          –

              Perl
          –

      Tous ces langages sont plus difficiles à utiliser pour
 ●


      le néophyte
              Ce qui ne signifie pas que PHP n'est pas capable de se
          –
                comporter en quot;PROquot;
                         Il suffit de le vouloir : il est capable
                     ●



      PHP peut communiquer avec ces autres langages
 ●




                                                                       31
AFUP Supélec Mars 2009
PHP et les autres
             langages
      PHP est le seul langage qui a été conçu avec
  ●


       comme point de départ le Web (1995)
             Il est issu de la fusion de bibliothèques Web anarchiques
         –
                à l'époque
             Il est un peu le pionnier du développement Web
         –

      PHP est tourné vers le Web
  ●


             Même s'il sait faire autre chose
         –

      PHP évolue avec le Web
 ●



      PHP évolue pour le Web
 ●


             Et cela ne changera jamais
         –




                                                                         32
AFUP Supélec Mars 2009
exemples

      PHP-GTK
  ●



  <?php
  class Php_Gtk_Twitter_Client extends GtkWindow {
       public function __construct() {
            parent::__construct();
            $this->set_icon($this->render_icon(
            Gtk::STOCK_ABOUT, Gtk::ICON_SIZE_DIALOG));
            $this->set_size_request(300, 500);
            $this->set_title('PHP-GTK Twitter Client');
            $this->connect_simple('destroy', array('Gtk',
  'main_quit'));
       }
  }

  $window = new Php_Gtk_Twitter_Client;
  $window->show_all();
  Gtk::main();




                                                            33
AFUP Supélec Mars 2009
exemples

      Indexation avec Java-Lucène (Zend Framework)
  ●



          <?php
          // Open existing index
          $index = Zend_Search_Lucene::open('/data/my-index');
          $doc = new Zend_Search_Lucene_Document();
          // Store document URL to identify it in search result.
          $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
          // Index document content
          $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
          $docContent));
          // Add document to the index.
          $index->addDocument($doc);




          HTML document:
          <?php
          $doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename);
          $index->addDocument($doc);
          ?>



                                                                              34
AFUP Supélec Mars 2009
exemples

          Tests unitaires (PHPUnit)
  ●



 class AscenseurTest extends PHPUnit_Framework_TestCase
 {
    public function testAscenseurMonteAvecDesPersonnes ()
    {
      $p = $this->getMock('Personne',array('getEtage','setEtage'),array('julien2'));

          $p->expects($this->once())->method('getEtage')->will($this->returnValue(3));
          $p->expects($this->once())->method('setEtage')->with($this->equalTo(8));

          $this->ascenseur->charger($this->personne);
          $this->ascenseur->charger($p);
          $this->ascenseur->go(8);
          $this->assertEquals(8, $this->ascenseur->getPersonne($this->personne)->getEtage());
      }
 }




                                                                                                35
AFUP Supélec Mars 2009
exemples

      Gestion de document Microsoft Office 2007
  ●



 <?php
 require_once('openxml.class.php');
 $documents = array('sample1.docx', 'sample1.xlsx');
 foreach ($documents as $document) {
   echo quot;<b><u>$document</u></b><br/>quot;;
   try {

      $mydoc = OpenXMLDocumentFactory::openDocument($document);

    echo '<br/><i>Metadonnées :</i><br/><br/>';
    echo 'Créateur: ' . $mydoc->getCreator() . '<br/>';
    echo 'Sujet: ' . $mydoc->getSubject() . '<br/>';
    echo 'Mots-clés: ' . $mydoc->getKeywords() . '<br/>';
    echo 'Description: ' . $mydoc->getDescription() . '<br/>';
    echo 'Date de création : ' . $mydoc->getCreationDate() . '</br>';
    echo 'Date de dernière modification : ' . $mydoc->getLastModificationDate() . '<br/>';
    echo 'Modifié en dernier par: ' . $mydoc->getLastWriter() . '<br/>';
    echo 'Révision: ' . $mydoc->getRevision() . '<br/>';
   }catch (OpenXMLFatalException $e) {
      echo $e->getMessage();
  }


                                                                                             36
AFUP Supélec Mars 2009
exemples

      Interaction avec Google Maps
  ●




           <?php

          $api_url = ‘http://maps.google.com/maps/geo’;
          $query = http_build_query(array(
              ‘q’    => ‘1313 W Mockingbird Lane, Dallas, TX 75247’ ,
              ‘key’   => ‘abcdefg’ ,
              ‘output’ => ‘xml’ ,
          ));

          $request_url = $api_url. ’?’ .$query;
          $xml      = simplexml_load_string(fle_get_contents($request_url));
          $coords    = explode(‘,’ , $xml->Response->Placemark->Point->coordinates);

          echo ‘Lat: ‘ .$coords[1]. ’ Long: ‘ .$coords[0];




                                                                                       37
AFUP Supélec Mars 2009
exemples

      Filtrage de variables
  ●


        $args = array(
          'product_id' => FILTER_SANITIZE_ENCODED,
          'component' => array('filter' => FILTER_VALIDATE_INT,
                          'flags'    => FILTER_REQUIRE_ARRAY,
                          'options' => array('min_range' => 1, 'max_range' => 10)
                         ),
          'versions'   => FILTER_SANITIZE_ENCODED,
          'doesnotexist' => FILTER_VALIDATE_INT,
          'testscalar' => array(
                          'filter' => FILTER_VALIDATE_INT,
                          'flags' => FILTER_REQUIRE_SCALAR,
                         ),
          'testarray' => array(
                          'filter' => FILTER_VALIDATE_INT,
                          'flags' => FILTER_REQUIRE_ARRAY,
                         )

        );
        $myinputs = filter_input_array(INPUT_POST, $args);

        var_dump($myinputs);
        echo quot;nquot;;

                                                                                    38
AFUP Supélec Mars 2009
exemples

      Lecture d'un flux RSS
  ●



<?php
  try{
     if(!@$fluxrss=simplexml_load_file('http://www.lemonde.fr/rss/sequence/0,2-651865,1-0,0.xml')){
         throw new Exception('Flux introuvable');
     }
     echo '<h3>'.(string)$fluxrss->channel->title.'</h3>
            <p>'.(string)$fluxrss->channel->description.'</p>';
     echo '<ul>';
     foreach($fluxrss->channel->item as $item){
         echo '<li><a href=quot;'.(string)$item->link.'quot;>'.(string)$item->title.'</a> <i>publié le'.
(string)date('d/m/Y à Ghi',strtotime($item->pubDate)).'</i></li>';
         if(++$i>=$nb_affichage)
            break;
     }
     echo '</ul>';
  }
  catch(Exception $e){
     echo $e->getMessage();
  }




                                                                                               39
AFUP Supélec Mars 2009
exemples

      Enregistrement d'un service Windows
  ●




            <?php
            $ret = win32_create_service(array(
              ‘service’ => ‘PHPSvc’,
              ‘display’ => ‘PHP Test Service’,
              ‘path’ => ‘C:PHPphp.exe’,
              ‘params’ => ‘C:WindowsSystem32PHPSvc.php run’));
            if ($ret === true) {
                echo «PHPSvc a été enregistré comme service.n»;
            } else {
                echo «Echec de l’enregistrement de PHPSvc. Erreur : {$ret}n»;
            }
            ?>




                                                                                 40
AFUP Supélec Mars 2009
exemples

      Lecture d'un fichier ogg Vorbis
  ●


 $fp = fopen('ogg://monaudio.ogg', 'r');

 /* Collecte quelques informations sur le fichier. */
 $metadata = stream_get_meta_data($fp);

 /* Inspection de la première chanson (habituellement la seule chanson
   mais les fichiers OGG/Vorbis peuvent être chaînés) */
 $songdata = $metadata['wrapper_data'][0];

 echo quot;Fichier OGG/Vorbis encodé par : {$songdata['vendor']}n.quot;;
 echo quot; {$songdata['channels']} canaux de {$songdata['rate']}Hz encodé à
 {$songdata['bitrate_nominal']}bps.nquot;;
 foreach($songdata['comments'] as $comment) {
    echo quot; $commentnquot;;
 }

 while ($audio_data = fread($fp, 8192)) {
   /* Faire quelque chose avec l'audio PCM extrait depuis le OGG.
     Copier vers /dev/dsp est une bonne chose sur les systèmes linux,
     souvenez-vous juste de définir le périphérique pour votre mode d'échantillonage d'abord. */
 }
 fclose($fp);

                                                                                                   41
AFUP Supélec Mars 2009
exemples

      Dialogue avec un serveur Steam
  ●


      define('PACKET_SIZE', '1400');
      define('SERVERQUERY_INFO', quot;xFFxFFxFFxFFTSource Engine Queryquot;);
      define ('REPLY_INFO', quot;x49quot;);

      // Ip address and port
      $_ip = '82.149.249.243';
      $_port = '27017';

      // Open connection with server
      $socket = stream_socket_client('udp://'.$_ip.':'.$_port, $errno, $errstr, 30);

      // Send command to server
      $cmd = SERVERQUERY_INFO;
      $length = strlen($cmd);
      fwrite($socket, $cmd, $length);

      // Get response from server
      $response = fread($socket, PACKET_SIZE);

      // Clean response
      $pattern = quot;#xFFxFFxFFxFFquot;.REPLY_INFO.quot;#quot;;
      $response = preg_replace($pattern, '', $response);


                                                                                       42
AFUP Supélec Mars 2009
exemples
      Filtrage en imagerie numérique
  ●


  $mx = array(array(-1,0,1),
           array(-2,0,2),
           array(-1,0,1)
         );
  $my = array(array(1,2,1),
           array(0,0,0),
           array(-1,-2,-1)
         );
  $m_elements = count($mx);
  $m_offset = floor($m_elements/2);
  $original = imagecreatefromjpeg(quot;woman.jpgquot;);
  $source = imagecreatetruecolor(imagesx($original)+($m_offset*2),imagesy($original)+
($m_offset*2));
  $red = imagecolorallocate($source,255,0,0);
  imagecopy($source, $original, $m_offset, $m_offset, 0, 0, imagesx($original),imagesy($original));

  imagecopyresampled($source, $original, 0, 0, 0, 0, imagesx($original)+($m_offset*2), $m_offset,
imagesx($original), $m_offset);
imagecopyresampled($source, $original, 0, imagesy($original)+$m_offset, 0, imagesy($original)-
$m_offset, imagesx($original)+($m_offset*2), $m_offset, imagesx($original), $m_offset);
  imagecopy($source, $original, 0, $m_offset, 0, 0, $m_offset, imagesy($original));
  imagecopy($source, $original, imagesx($original)+$m_offset, $m_offset, imagesx($original)-
$m_offset, 0, $m_offset, imagesy($original));

                                                                                                43
AFUP Supélec Mars 2009
Questions ?




     Questions
 ●




                         44
AFUP Supélec Mars 2009

More Related Content

What's hot

symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
Fabien Potencier
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
Firas Kouẞàa
 

What's hot (20)

Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Symfony Best Practices
Symfony Best PracticesSymfony Best Practices
Symfony Best Practices
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
Php
PhpPhp
Php
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
PHP5 et Zend Framework
PHP5 et Zend FrameworkPHP5 et Zend Framework
PHP5 et Zend Framework
 
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
Plateforme De DéVeloppement En Php5 (Zend + Doctrine)
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
Installation configuration OpenERP 7 - Windows
Installation   configuration OpenERP 7 - WindowsInstallation   configuration OpenERP 7 - Windows
Installation configuration OpenERP 7 - Windows
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3wallabag, comment on a migré vers symfony3
wallabag, comment on a migré vers symfony3
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3 Introduction à eZ Publish Platform 5.3
Introduction à eZ Publish Platform 5.3
 
Conference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à ParisConference drupal 8 au Forum PHP 2013 à Paris
Conference drupal 8 au Forum PHP 2013 à Paris
 
Présentation symfony epita
Présentation symfony epitaPrésentation symfony epita
Présentation symfony epita
 
Presentation du framework symfony
Presentation du framework symfonyPresentation du framework symfony
Presentation du framework symfony
 

Similar to AFUP & PHP @ Supelec

Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Aref Jdey
 
Chap01 introduction
Chap01 introductionChap01 introduction
Chap01 introduction
Pape Ndiaye
 
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
Fabien Potencier
 

Similar to AFUP & PHP @ Supelec (20)

43_pps.pdf
43_pps.pdf43_pps.pdf
43_pps.pdf
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
 
Flex et Php Afup
Flex et Php AfupFlex et Php Afup
Flex et Php Afup
 
Flex Php E Seminar Fr
Flex Php E Seminar FrFlex Php E Seminar Fr
Flex Php E Seminar Fr
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 
Conference Php Web Services
Conference Php Web ServicesConference Php Web Services
Conference Php Web Services
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php
 
cours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdfcours-gratuit.com--coursMySql-id2218.pdf
cours-gratuit.com--coursMySql-id2218.pdf
 
Nouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP OpenskaNouveautés PHP 7 : Introduction et performances - MeetUP Openska
Nouveautés PHP 7 : Introduction et performances - MeetUP Openska
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'AgilitéPHP : Une Plateforme Industrialisable Au Service De L'Agilité
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
 
Chap01 introduction
Chap01 introductionChap01 introduction
Chap01 introduction
 
Xhprof
XhprofXhprof
Xhprof
 
Forum PHP 2014 day 1
Forum PHP 2014 day 1Forum PHP 2014 day 1
Forum PHP 2014 day 1
 
Deboguer Avec Firephp
Deboguer Avec FirephpDeboguer Avec Firephp
Deboguer Avec Firephp
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHP
 
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
symfony: Simplifier vos développement Web professionnels avec PHP (Symfony P...
 
Cours PHP 1
Cours PHP 1Cours PHP 1
Cours PHP 1
 

More from julien pauli

Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshop
julien pauli
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
julien pauli
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
julien pauli
 

More from julien pauli (20)

Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019
 
Php engine
Php enginePhp engine
Php engine
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension review
 
Dns
DnsDns
Dns
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machine
 
Basics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGBasics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNG
 
Mastering your home network - Do It Yourself
Mastering your home network - Do It YourselfMastering your home network - Do It Yourself
Mastering your home network - Do It Yourself
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performances
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTS
 
Tcpip
TcpipTcpip
Tcpip
 
Symfony live 2017_php7_performances
Symfony live 2017_php7_performancesSymfony live 2017_php7_performances
Symfony live 2017_php7_performances
 
PHP 7 new engine
PHP 7 new enginePHP 7 new engine
PHP 7 new engine
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
 
Profiling php5 to php7
Profiling php5 to php7Profiling php5 to php7
Profiling php5 to php7
 
PHP 7 performances from PHP 5
PHP 7 performances from PHP 5PHP 7 performances from PHP 5
PHP 7 performances from PHP 5
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extension
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshop
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
 

AFUP & PHP @ Supelec

  • 1. Bienvenue! AFUP : Conférence Supélec PHP Julien Pauli 3 Mars 2009
  • 2. L’AFUP Association Française des Utilisateurs de PHP Association 1901 but non lucratif ● Promouvoir PHP en France – ~250 membres ● Les activités : ● Rendez-vous – ApéroPHP – Forum PHP – 2 AFUP Supélec Mars 2009
  • 3. Les intervenants Julien PAULI Architecte expert certifié PHP & ZF ● ● Membre AFUP ● Auteur (Eyrolles) ● Responsable pôle formation PHP chez Anaska Conférencier & Consultant ● ● Contributeur PHP ● Contributeur ZendFramework 3 AFUP Supélec Mars 2009
  • 4. Les entreprises ANASKA Société de formation en logiciels libres ● Depuis 2002 – PHP très présent et très demandé ● 5 niveaux de formations – Certification – Les logiciels libres en pleine expansion ● 4 AFUP Supélec Mars 2009
  • 5. Les entreprises ALTER-WAY Catalyseur de solutions open source ● Intégrateur logiciels libres ● Création 2006 – Hébergement ● Développement ● Formation ● Gestion de données ● Audit & conseil ● 5 AFUP Supélec Mars 2009
  • 6. Logiciel libre Le logiciel libre est moins impacté par la crise ● Il est en constante évolution ● Contribuez – Le logiciel libre coûte moins cher que le ● propriétaire Il est plus souple à déployer – 6 AFUP Supélec Mars 2009
  • 7. PHP en dates 1995 Rasmus Lerdorf crée Personnal Homepage Tools ● pour mettre à jour son CV en ligne La librairie ancêtre de PHP est toujours en ligne – http://museum.php.net/ ● 7 AFUP Supélec Mars 2009
  • 8. PHP en dates 1998 Un groupe déjà important travaille autour de ce ● langage PHP 2 puis PHP 3 voient le jour – Déjà là : beaucoup de serveurs sont supportés – L'installation est très simple et légère – 8 AFUP Supélec Mars 2009
  • 9. PHP en dates 1998-2000 Zeev Suraski et Andi Gutmans réécrivent tout le ● coeur du langage Gestion de la mémoire anticipée – Nombreuses macros C – Le quot;Zend Enginequot; est né – Zend = Zeev + Andi – Un angouement international ● La magie de l'open source fonctionne – Un langage modulaire ● 2000 : PHP4 ● 9 AFUP Supélec Mars 2009
  • 10. PHP en chiffre 2004 PHP 5 ● Zend Engine 2 : réécriture complète – Modèle Objet abouti – Traitements XML simplifiés – SOAP et Web Services – Amélioration support MySQL – Des centaines de contributeurs au langage – 10 AFUP Supélec Mars 2009
  • 11. PHP et le futur PHP 5.3 (quelque part en 2009 ?) Namespaces ● Accès au garbage collector ● Profiling Xslt ● Closures et fonctions anonymes ● Modèle objet amélioré et plus riche ● Opérateur quot;gotoquot; ● Meilleure gestion de l'I18n ● Phar (PHPArchive) ● 11 AFUP Supélec Mars 2009
  • 12. PHP et le futur PHP 6 (quelque part en 2078 ?) Tout le code est réécrit pour gérer Unicode ● 12 AFUP Supélec Mars 2009
  • 13. PHP en chiffre 13 AFUP Supélec Mars 2009
  • 14. PHP en chiffre 14 AFUP Supélec Mars 2009
  • 15. PHP en chiffre 15 AFUP Supélec Mars 2009
  • 16. Ils l'utilisent Yahoo ● Le Monde ● SkyRock Ce n'est pas parce que ce n'est ● ● pas marqué .php à la fin du BNP Paribas ● fichier, que ce n'est pas PHP qui Facebook ● traite :-) Meetic ● Nokia ● TF1 ● Alapage ● 16 AFUP Supélec Mars 2009
  • 17. Un langage modulaire PHP est adopté car il est modulaire ● Le Zend Engine possède les fonctionnalités de base – Que l'on active ou pas à la compilation ● Le Zend Engine possède des connecteurs pour lui ajouter – des fonctionnalités Et il existe un gros dépôt de modules (PECL) – Ecrits en C ● Open Source ● Branchés sur l'API du Zend Engine ● Rajoutent des fonctionnalités au langage ● Se chargent via des .so ou des .dll, très simplement ● 17 AFUP Supélec Mars 2009
  • 18. Un langage modulaire PHP est adopté car il existe une communauté ● extrêmement importante autour On utilise PHP en entreprise certes mais … ● Beaucoup de projets écrits en PHP sont ouverts et libres – Des moteurs de recherches ● Des ORM (Mapping Objet Relationnels) ● Des frameworks ● Des outils de testabilité logiciel ● Des outils métiers (mathématiques) ● ... ● http://pear.php.net – http://www.phpclasses.org – 18 AFUP Supélec Mars 2009
  • 19. Manières d'utiliser PHP CLI ● Pas mal d'administrateurs l'utilisent – Encore loin derrière Perl ou Python mais... ● Présent dans certaines box, certains décodeurs TV ● Syntaxe proche du C agréable pour les admins – 19 AFUP Supélec Mars 2009
  • 20. Manières d'utiliser PHP PHP peut s'utiliser avec un serveur Web en CGI ou ● Fast-CGI Interface normalisé (Common Gateway Interface) – Ancêtre du Web Dynamique – Ancêtre de PHP, qui a la base était une toute petite ● bibliothèque chargée en CGI Problématique de performance – 20 AFUP Supélec Mars 2009
  • 21. Manières d'utiliser PHP Module de serveur ● Module de serveur écrit en C – Très performant – L'utilisation majeure de PHP, 90% – 21 AFUP Supélec Mars 2009
  • 22. Le Web client serveur 22 AFUP Supélec Mars 2009
  • 23. Le Web client serveur Clients Serveur 23 AFUP Supélec Mars 2009
  • 24. Fonctionnement global PHP tourne en tant que module Apache ● Historiquement Apache est très utilisé pour PHP – Apache reçoit une requête demandant du PHP – Il la passe à PHP qui est alors exécuté sur le serveur – Le résultat de cette exécution produit une sortie – En général en HTML ● Cette sortie est envoyée par Apache au client – Une page s'affiche – 24 AFUP Supélec Mars 2009
  • 25. Le serveur PHP tourne donc (très majoritairement) sur un ● serveur Web La renommée de PHP vient du fait qu'il supporte ● énormément de serveurs Web PHP est présent partout ● Apache (historiquement le plus utilisé) – Caudium – Lighttpd – Iplanet / Netscape (Sun) – IIS – 25 AFUP Supélec Mars 2009
  • 26. La plateforme PHP tourne sous beaucoup de plateformes ● GNU/Linux (le plus utilisé, le plus performant) – Unix (BSD Familly) – Mac OS – Windows – Solaris – HP-Ux – Même si ce n'est pas parfait, PHP abstrait ● beaucoup la couche OS sous laquelle il tourne PHP se comporte sensiblement de la même manière – quelque soit le système sur lequel il tourne De gros efforts sont sans arrêt fournis dans ce but ● 26 AFUP Supélec Mars 2009
  • 27. Un langage proche du C PHP est le C du Web ● Sans la gestion de la mémoire – Sans typage fort – Sans tous les aspects quot;chiantsquot; du C – Un simple éditeur de texte suffit pour taper du PHP ● Un quot;simplequot; serveur Web suffit pour rendre une ● page totalement quot;dynamiquequot; 27 AFUP Supélec Mars 2009
  • 28. Un langage très riche Le potentiel de PHP est vraiment inimaginable ● C'est ce qui en fait un langage pas si facile que ça après – tout PHP sait jouer avec XML ● PHP sait créer des processus (fork et signaux ● POSIX) PHP peut s'interfacer avec tout programme ● possédant des entrée/sortie PHP peut communiquer via des sockets quelque ● soit le protocole PHP peut ouvrir des fichiers et lancer des tâches ● externes 28 AFUP Supélec Mars 2009
  • 29. Un langage très riche PHP peut interagir avec la plupart des SGBD ● MySQL – PostgreSQL – Ingres – SQLServer – IBM / DB2 – Oracle – 29 AFUP Supélec Mars 2009
  • 30. Les autres langages PHP est massivement adopté car ● Sa syntaxe est proche du C – Sa syntaxe est très permissive – Langage de script ● On ne s'embête pas 20h avant d'avoir du concrêt ● On ne s'occupe pas de la mémoire ● On ne s'occupe pas du typage ● Il est très performant – Pour un langage de script ● Il est massivement supporté par les serveurs – PHP est présent partout car Apache est présent partout ● 30 AFUP Supélec Mars 2009
  • 31. Les autres langages PHP cohabite bien avec ses quot;concurrentsquot; ● Java – Python – Ruby (On Rail?) – Perl – Tous ces langages sont plus difficiles à utiliser pour ● le néophyte Ce qui ne signifie pas que PHP n'est pas capable de se – comporter en quot;PROquot; Il suffit de le vouloir : il est capable ● PHP peut communiquer avec ces autres langages ● 31 AFUP Supélec Mars 2009
  • 32. PHP et les autres langages PHP est le seul langage qui a été conçu avec ● comme point de départ le Web (1995) Il est issu de la fusion de bibliothèques Web anarchiques – à l'époque Il est un peu le pionnier du développement Web – PHP est tourné vers le Web ● Même s'il sait faire autre chose – PHP évolue avec le Web ● PHP évolue pour le Web ● Et cela ne changera jamais – 32 AFUP Supélec Mars 2009
  • 33. exemples PHP-GTK ● <?php class Php_Gtk_Twitter_Client extends GtkWindow { public function __construct() { parent::__construct(); $this->set_icon($this->render_icon( Gtk::STOCK_ABOUT, Gtk::ICON_SIZE_DIALOG)); $this->set_size_request(300, 500); $this->set_title('PHP-GTK Twitter Client'); $this->connect_simple('destroy', array('Gtk', 'main_quit')); } } $window = new Php_Gtk_Twitter_Client; $window->show_all(); Gtk::main(); 33 AFUP Supélec Mars 2009
  • 34. exemples Indexation avec Java-Lucène (Zend Framework) ● <?php // Open existing index $index = Zend_Search_Lucene::open('/data/my-index'); $doc = new Zend_Search_Lucene_Document(); // Store document URL to identify it in search result. $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl)); // Index document content $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $docContent)); // Add document to the index. $index->addDocument($doc); HTML document: <?php $doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename); $index->addDocument($doc); ?> 34 AFUP Supélec Mars 2009
  • 35. exemples Tests unitaires (PHPUnit) ● class AscenseurTest extends PHPUnit_Framework_TestCase { public function testAscenseurMonteAvecDesPersonnes () { $p = $this->getMock('Personne',array('getEtage','setEtage'),array('julien2')); $p->expects($this->once())->method('getEtage')->will($this->returnValue(3)); $p->expects($this->once())->method('setEtage')->with($this->equalTo(8)); $this->ascenseur->charger($this->personne); $this->ascenseur->charger($p); $this->ascenseur->go(8); $this->assertEquals(8, $this->ascenseur->getPersonne($this->personne)->getEtage()); } } 35 AFUP Supélec Mars 2009
  • 36. exemples Gestion de document Microsoft Office 2007 ● <?php require_once('openxml.class.php'); $documents = array('sample1.docx', 'sample1.xlsx'); foreach ($documents as $document) { echo quot;<b><u>$document</u></b><br/>quot;; try { $mydoc = OpenXMLDocumentFactory::openDocument($document); echo '<br/><i>Metadonnées :</i><br/><br/>'; echo 'Créateur: ' . $mydoc->getCreator() . '<br/>'; echo 'Sujet: ' . $mydoc->getSubject() . '<br/>'; echo 'Mots-clés: ' . $mydoc->getKeywords() . '<br/>'; echo 'Description: ' . $mydoc->getDescription() . '<br/>'; echo 'Date de création : ' . $mydoc->getCreationDate() . '</br>'; echo 'Date de dernière modification : ' . $mydoc->getLastModificationDate() . '<br/>'; echo 'Modifié en dernier par: ' . $mydoc->getLastWriter() . '<br/>'; echo 'Révision: ' . $mydoc->getRevision() . '<br/>'; }catch (OpenXMLFatalException $e) { echo $e->getMessage(); } 36 AFUP Supélec Mars 2009
  • 37. exemples Interaction avec Google Maps ●   <?php $api_url = ‘http://maps.google.com/maps/geo’; $query = http_build_query(array( ‘q’ => ‘1313 W Mockingbird Lane, Dallas, TX 75247’ , ‘key’ => ‘abcdefg’ , ‘output’ => ‘xml’ , )); $request_url = $api_url. ’?’ .$query; $xml = simplexml_load_string(fle_get_contents($request_url)); $coords = explode(‘,’ , $xml->Response->Placemark->Point->coordinates); echo ‘Lat: ‘ .$coords[1]. ’ Long: ‘ .$coords[0]; 37 AFUP Supélec Mars 2009
  • 38. exemples Filtrage de variables ● $args = array( 'product_id' => FILTER_SANITIZE_ENCODED, 'component' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY, 'options' => array('min_range' => 1, 'max_range' => 10) ), 'versions' => FILTER_SANITIZE_ENCODED, 'doesnotexist' => FILTER_VALIDATE_INT, 'testscalar' => array( 'filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_SCALAR, ), 'testarray' => array( 'filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY, ) ); $myinputs = filter_input_array(INPUT_POST, $args); var_dump($myinputs); echo quot;nquot;; 38 AFUP Supélec Mars 2009
  • 39. exemples Lecture d'un flux RSS ● <?php try{ if(!@$fluxrss=simplexml_load_file('http://www.lemonde.fr/rss/sequence/0,2-651865,1-0,0.xml')){ throw new Exception('Flux introuvable'); } echo '<h3>'.(string)$fluxrss->channel->title.'</h3> <p>'.(string)$fluxrss->channel->description.'</p>'; echo '<ul>'; foreach($fluxrss->channel->item as $item){ echo '<li><a href=quot;'.(string)$item->link.'quot;>'.(string)$item->title.'</a> <i>publié le'. (string)date('d/m/Y à Ghi',strtotime($item->pubDate)).'</i></li>'; if(++$i>=$nb_affichage) break; } echo '</ul>'; } catch(Exception $e){ echo $e->getMessage(); } 39 AFUP Supélec Mars 2009
  • 40. exemples Enregistrement d'un service Windows ● <?php $ret = win32_create_service(array( ‘service’ => ‘PHPSvc’, ‘display’ => ‘PHP Test Service’, ‘path’ => ‘C:PHPphp.exe’, ‘params’ => ‘C:WindowsSystem32PHPSvc.php run’)); if ($ret === true) { echo «PHPSvc a été enregistré comme service.n»; } else { echo «Echec de l’enregistrement de PHPSvc. Erreur : {$ret}n»; } ?> 40 AFUP Supélec Mars 2009
  • 41. exemples Lecture d'un fichier ogg Vorbis ● $fp = fopen('ogg://monaudio.ogg', 'r'); /* Collecte quelques informations sur le fichier. */ $metadata = stream_get_meta_data($fp); /* Inspection de la première chanson (habituellement la seule chanson mais les fichiers OGG/Vorbis peuvent être chaînés) */ $songdata = $metadata['wrapper_data'][0]; echo quot;Fichier OGG/Vorbis encodé par : {$songdata['vendor']}n.quot;; echo quot; {$songdata['channels']} canaux de {$songdata['rate']}Hz encodé à {$songdata['bitrate_nominal']}bps.nquot;; foreach($songdata['comments'] as $comment) { echo quot; $commentnquot;; } while ($audio_data = fread($fp, 8192)) { /* Faire quelque chose avec l'audio PCM extrait depuis le OGG. Copier vers /dev/dsp est une bonne chose sur les systèmes linux, souvenez-vous juste de définir le périphérique pour votre mode d'échantillonage d'abord. */ } fclose($fp); 41 AFUP Supélec Mars 2009
  • 42. exemples Dialogue avec un serveur Steam ● define('PACKET_SIZE', '1400'); define('SERVERQUERY_INFO', quot;xFFxFFxFFxFFTSource Engine Queryquot;); define ('REPLY_INFO', quot;x49quot;); // Ip address and port $_ip = '82.149.249.243'; $_port = '27017'; // Open connection with server $socket = stream_socket_client('udp://'.$_ip.':'.$_port, $errno, $errstr, 30); // Send command to server $cmd = SERVERQUERY_INFO; $length = strlen($cmd); fwrite($socket, $cmd, $length); // Get response from server $response = fread($socket, PACKET_SIZE); // Clean response $pattern = quot;#xFFxFFxFFxFFquot;.REPLY_INFO.quot;#quot;; $response = preg_replace($pattern, '', $response); 42 AFUP Supélec Mars 2009
  • 43. exemples Filtrage en imagerie numérique ● $mx = array(array(-1,0,1), array(-2,0,2), array(-1,0,1) ); $my = array(array(1,2,1), array(0,0,0), array(-1,-2,-1) ); $m_elements = count($mx); $m_offset = floor($m_elements/2); $original = imagecreatefromjpeg(quot;woman.jpgquot;); $source = imagecreatetruecolor(imagesx($original)+($m_offset*2),imagesy($original)+ ($m_offset*2)); $red = imagecolorallocate($source,255,0,0); imagecopy($source, $original, $m_offset, $m_offset, 0, 0, imagesx($original),imagesy($original)); imagecopyresampled($source, $original, 0, 0, 0, 0, imagesx($original)+($m_offset*2), $m_offset, imagesx($original), $m_offset); imagecopyresampled($source, $original, 0, imagesy($original)+$m_offset, 0, imagesy($original)- $m_offset, imagesx($original)+($m_offset*2), $m_offset, imagesx($original), $m_offset); imagecopy($source, $original, 0, $m_offset, 0, 0, $m_offset, imagesy($original)); imagecopy($source, $original, imagesx($original)+$m_offset, $m_offset, imagesx($original)- $m_offset, 0, $m_offset, imagesy($original)); 43 AFUP Supélec Mars 2009
  • 44. Questions ? Questions ● 44 AFUP Supélec Mars 2009