PHP 5.3, PHP Next

download PHP 5.3, PHP Next

of 48

  • date post

    26-May-2015
  • Category

    Technology

  • view

    4.016
  • download

    2

Embed Size (px)

description

Lors de cette présentation vous trouverez la liste complète des nouveautés de PHP 5.3 avec des exemples d'implémentation. Elle comprend aussi une partie introspective sur le futur de PHP au 30 juin 2010

Transcript of PHP 5.3, PHP Next

  • 1. Nouveauts PHP 5.3
    • Cellule PHP R2SC

# he who doesn't do anything, doesn't go wrong Zeev Suraski 2.

  • Introduction
  • Installation
  • Nouveauts de PHP 5.3
  • PHP.next

Sommaire # 3.

  • Objectifs de la prsentation d'aujourd'hui
    • Nouveauts PHP 5.3
      • Par rapport PHP 5.2
    • Spculations sur lavenir de PHP
      • Quest devenu PHP 6?
      • De quoi sera faite la prochaine version de PHP?
    • Questions?

Introduction # 4.

  • Versions de PHP
    • 4.4.9 : Aot 2008 plus maintenu !
    • 5.0.0 : juillet 2004
    • 5.1.0 : Novembre 2005
    • 5.2.0 : Novembre 2006
      • 5.2.13 : Fvrier 2010
  • PHP 5.3
    • Versions testables : printemps 2008
    • 1re version alpha : 1er aot 2008
    • Version 5.3.0 : 30 juin 2009
      • Dernire version : 5.3.2, 4 mars 2010
  • PHP.next ?
    • Disparition de PHP 6 en mars 2010
    • On en reparle la fin de la prsentation

Rappel : Historique de PHP # 5.

  • Introduction
  • Installation
  • Nouveauts de PHP 5.3
  • PHP.next

Sommaire # 6.

  • Rcupration des sources
    • http://www.php.net/downloads.php
  • Pour Linux
    • PHP 5.3 intgr dans les dernires versions dUbuntu et Fedora.
  • Pour windows :
    • http://windows.php.net/download/
    • Plusieurs versions :
      • Zip contenant les sources compiles
      • Installeur windows
      • Debug Pack
    • Plusieurs compilations
      • VC9 Thread Safe et VC9 Non Thread Safe pour IIS
      • VC6 Thread Safe pour Apache 2 et Apache 2.2
      • VC6 Non thread Safe pour Apache 1.3
    • Par contre plus de pecl4win y compris APC, mais on peut trouver quelques extensions :
      • http://downloads.php.net/pierre/

Installation PHP 5.3 # 7.

  • En hbergement
    • Mise jour en cours
    • Chez OVH, possibilit de switcher entre PHP 5.2 et PHP 5.3
      • Pour cela diter un fichier .htaccess et ajouter :SetEnv PHP_VER 5_TEST
  • En Local
    • Package tout en un :
      • WampServer
      • EasyPHP
      • XAMPP
    • Sur une VM
    • Avec les outils cits prcdemment

Tester PHP 5.3 # 8.

  • Exemples et de tests :
    • Couvrant la quasi-totalit des nouveauts de PHP 5.3
    • Tlchargement
      • http://blog.pascal-martin.fr/public/php-5.3/php-5.3-exemples.tar.bz2
  • Et les applications ?
    • Normalement compatible (attention au fonctions dprcies)
    • En pratique peu de Framework ou applications optimises pour PHP 5.3
    • A venir :
      • Symfony 2 (PHP 5.3 only)
      • Zend Framework 2.0 (PHP 5.3 only,fin danne)
      • Doctrine 2 (dj disponible en bata)

Tester PHP 5.3 # 9. Sommaire

  • Introduction
  • Installation
  • Nouveauts de PHP 5.3
  • PHP.next

# 10.

  • Plus grosse nouveaut de PHP 5.3
  • Objectif :
    • Rsoudre le problme des noms de classes trs longs en PHP
      • class PHPUnit_Extensions_Database_DB_MetaData_MySQL extends PHPUnit_Extensions_Database_DB_MetaData_InformationSchema
  • Quelques notes
    • namespace doit tre la premire instruction d'un fichier
    • Plusieurs fichiers pour le mme namespace
    • Plusieurs namespaces dans un fichier
  • Mots-clefs
    • namespace pour dclarer un namespace
    • use pour utiliser un espace de noms, en spcifiant ventuellement un alias
    • comme oprateur de rsolution de namespace

PHP 5.3 : Namespaces # 11.

  • Dclarations de fonctions :
  • namespace FWK;
  • // Ce qui est dclar maintenant l'est dans le namespace "FWK"
  • function a() { echo 'FWKa'." " ;}
  • function b() { echo 'FWK'." " ;}
  • namespace APP;
  • // Ce qui est dclar maintenant l'est dans le namespace "APP"
  • function a() { echo 'APPa'." " ;}
  • Et l'utilisation :
  • use APP as APP;
  • a(); // APPa
  • APPa(); // APPa
  • FWKa(); // FwKa
  • FWK(); // FWK
  • b(); // Fatal error: Call to undefined function APP()
  • Intrt / Ides (Mme si ce nest pas lobjectif de dpart !)
    • Sparation des paquets logiciels
    • Framework dans un namespace, application dans un autre, un namespace par bibliothque, ...

Namespaces : fonctions # 12.

  • Mme chose avec des classes
  • namespace FWK;
  • class A {
  • public function a() { echo 'FWKAa'." " ;}
  • }
  • namespace APP;
  • class A {
  • public function a() { echo 'FWKAa'." " ;}
  • }
  • Et l'utilisation
  • use APP as APP;
  • $obj = new A();
  • var_dump( $obj ); // object(APPA)#1 (0) {}
  • var_dump(get_class( $obj )); // string(6) "APPA"
  • $obj ->a(); // APPAa
  • $obj = new FWKA();
  • var_dump( $obj ); // object(FWKA)#2 (0) {}
  • var_dump(get_class( $obj )); // string(6) "FWKA"
  • $obj ->a(); // FWKAa

Namespaces : classes # 13.

  • namespace NS7; // ns7-1.php
  • class A { public static function a() { echo '[' . __NAMESPACE__ . ']{' . __CLASS__ . '}(' . __METHOD__ . ") " ;}}
  • namespace NS7; // ns7-2.php
  • class B { public static function b() { echo '[' . __NAMESPACE__ . ']{' . __CLASS__ . '}(' . __METHOD__ . ") " ;}}
  • namespace NS7TESTGLOP; // ns7-3.php
  • class C { public static function c() { echo '[' . __NAMESPACE__ . ']{' . __CLASS__ . '}(' . __METHOD__ . ") " ;}}
  • // ns7.php
  • require_once ( 'ns7-1.php' ); require_once ( 'ns7-2.php' ); require_once ( 'ns7-3.php' );
  • echo NS7Aa(); // [NS7]{NS7A}(NS7Aa)
  • use NS7 as X;
  • //echo B();// Fatal error: Class 'B' not found
  • echo XB(); // [NS7]{NS7B}(NS7B)
  • use NS7TESTGLOP;
  • echo GLOPCc(); // [NS7TESTGLOP]{NS7TESTGLOPC}(NS7TESTGLOPCc)
  • use n'importe pas le contenu d'un namespace
    • Dfinit un alias, c'est tout !

Namespaces : use et alias # 14.

  • Ordre de rsolution
  • namespace NS;
  • function strlen( $str ) { return "MECHANT" ;}
  • // mme sans "use", on est dans le namespace NS !
  • echo strlen( 'glop' ) . " " ; // MECHANT
  • echo NSstrlen( 'glop' ) . " " ; // MECHANT
    • Dans un namespace, la rsolution des fonctions, classes, et constantes se fait dans le namespace en premier
    • Et on remonte l'espace de nom global si la rsolution a chou dans l'espace de noms courant
  • Accs direct l'espace de noms global
    • Utilisation de l'utilisateur de rsolution de porte
    • sans prciser de namespace
  • echo strlen( 'glop' ) . " " ; // 4

Namespaces : ordre de rsolution # 15.