AFUP & PHP @ Supelec

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    AFUP & PHP @ Supelec - Presentation Transcript

    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 \"Zend Engine\" 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 \"goto\" ● 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 \"chiants\" du C – Un simple éditeur de texte suffit pour taper du PHP ● Un \"simple\" serveur Web suffit pour rendre une ● page totalement \"dynamique\" 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 \"concurrents\" ● 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 \"PRO\" 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 \"<b><u>$document</u></b><br/>\"; 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 \"\\n\"; 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=\"'.(string)$item->link.'\">'.(string)$item->title.'</a> <i>publié le'. (string)date('d/m/Y à G\\hi',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:\\\\PHP\\\\php.exe’, ‘params’ => ‘C:\\\\Windows\\\\System32\\\\PHPSvc.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 \"Fichier OGG/Vorbis encodé par : {$songdata['vendor']}\\n.\"; echo \" {$songdata['channels']} canaux de {$songdata['rate']}Hz encodé à {$songdata['bitrate_nominal']}bps.\\n\"; foreach($songdata['comments'] as $comment) { echo \" $comment\\n\"; } 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', \"\\xFF\\xFF\\xFF\\xFFTSource Engine Query\"); define ('REPLY_INFO', \"\\x49\"); // 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 = \"#\\xFF\\xFF\\xFF\\xFF\".REPLY_INFO.\"#\"; $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(\"woman.jpg\"); $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

    + AlterWayAlterWay, 7 months ago

    custom

    330 views, 1 favs, 1 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 330
      • 329 on SlideShare
      • 1 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds
    • 1 views on http://85.ig.gmodules.com

    more

    All embeds
    • 1 views on http://85.ig.gmodules.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories