PHP 5.4 est arrivé! Ce que vous devez savoir

PHP 5.4 est là; prochaine étape majeure depuis la version 5.3: garder PHP 6 (support Unicode complet) en attente pour le moment. Les dernières améliorations améliorent considérablement son élégance, tout en supprimant les fonctionnalités obsolètes, ce qui entraîne une optimisation spectaculaire du temps d'exécution (jusqu'à 20% de vitesse en plus et une réduction de l'utilisation de la mémoire)..


Nouvelles fonctionnalités et améliorations

Certaines des nouvelles fonctionnalités clés incluent traits, un raccourci tableau syntaxe, un serveur Web intégré à des fins de test, l’utilisation de $ this dans les fermetures, accès de membre de classe à l'instanciation, est toujours disponible, et plus!

PHP 5.4.0 améliore considérablement les performances, l’encombrement de la mémoire et corrige plus de 100 bugs. Les fonctions obsolètes / supprimées notables incluent register_globals, citations magiques (environ le temps) et safe_mode. Il convient également de mentionner le fait que la prise en charge multi-octets est activée par défaut et default_charset a été changé de ISO-8859-1 à UTF-8.

Type de contenu: text / html; jeu de caractères = utf-8 est toujours envoyé; il n'est donc pas nécessaire de définir cette balise méta HTML ou d'envoyer des en-têtes supplémentaires pour la compatibilité UTF-8.


Traits

La meilleure démonstration des traits est lorsque plusieurs classes partagent la même fonctionnalité.

Traits (réutilisation horizontale / héritage multiple) sont un ensemble de méthodes, qui sont structurellement similaires à un classe (mais ne peut pas être instancié), qui permet aux développeurs de réutiliser librement des ensembles de méthodes dans plusieurs classes indépendantes. Comme PHP est un langage à héritage unique, une sous-classe ne peut hériter que d'une seule super-classe; c'est là que les traits viennent jouer.

La meilleure utilisation des traits est démontrée lorsque plusieurs classes partagent les mêmes fonctionnalités. Par exemple, imaginons que nous construisons un site Web et que nous devions utiliser les API de Facebook et de Twitter. Nous construisons deux classes qui, en commun, ont une fonction / méthode wrapper cURL. Au lieu d'effectuer le copier-coller classique de cette méthode (à utiliser dans deux classes), nous utilisons des traits (copier-coller, style du compilateur). De cette façon, nous créons du code réutilisable et suivons le principe DRY (Don't Repeat Yourself).

Voici un exemple:

 / ** trait cURL trait * / trait cURL fonction publique curl ($ url) $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ output = curl_exec ($ ch); curl_close ($ ch); return $ output;  / ** Classe de l'API Twitter * / class Twitter_API use cURL; // use trait here fonction publique get ($ url) return json_decode ($ this-> curl ('http://api.twitter.com/'.$url));  / ** Classe API Facebook * / class Facebook_API use cURL; // et ici la fonction publique get ($ url) return json_decode ($ this-> curl ('http://graph.facebook.com/'.$url));  $ facebook = new Facebook_API (); echo $ facebook-> get ('500058753') -> nom; // Rasmus Lerdorf / ** Démonstration à présent de la génialité de la syntaxe PHP 5.4 * / echo (new Facebook_API) -> get ('500058753') -> name; // Rasmus Lerdorf $ foo = 'get'; echo (new Facebook_API) -> $ foo ('500058753') -> nom; // et encore, Rasmus Lerdorf echo (new Twitter_API) -> get ('1 / users / show.json? screen_name = rasmus') -> name; // et encore une fois, Rasmus Lerdorf // P.S. Je ne suis pas obsédé par Rasmus :)

Je l'ai? Non? Voici l'exemple le plus simple!

 trait Net fonction publique net () return 'Net';  trait Tuts fonction publique tuts () return 'Tuts';  class NetTuts use Net, Tuts; fonction publique plus () return '+';  $ o = new NetTuts; echo $ o-> net (), $ o-> tuts (), $ o-> plus (); echo (new NetTuts) -> net (), (new NetTuts) -> tuts (), (new NetTuts) -> plus ();

Si vous avez des questions sur les traits, merci de poster une note dans la section commentaires ci-dessous.

Conseil important: La constante magique pour les traits est __TRAIT__.


Serveur Web CLI intégré

En développement Web, le meilleur ami de PHP est Apache HTTPD Server. Parfois, cependant, il peut être exagéré de configurer httpd.conf simplement pour l’utiliser dans un environnement de développement, lorsque vous avez vraiment besoin d’un serveur Web minuscule pouvant être lancé avec une simple ligne de commande. Heureusement, PHP 5,4 est livré avec un serveur Web CLI intégré.

Le serveur Web PHP CLI est conçu uniquement à des fins de développement et ne doit pas être utilisé en production..

Remarque: Les instructions ci-dessous concernent un environnement Windows.

Étape 1 - Créer un répertoire racine de document, un fichier de routeur et un fichier d'index

Allez à la racine de votre disque dur (en supposant C: \). Créez un répertoire / dossier, appelé public_html. Créez un nouveau fichier dans ce dossier et nommez-le. routeur.php. Copiez le contenu ci-dessous et collez-le dans ce fichier nouvellement créé..

 

Maintenant, créez un autre fichier, appelé index.php. Copiez le contenu ci-dessous et enregistrez le fichier.

 

Ouvrez votre php.ini fichier (il se trouve dans le répertoire d’installation de PHP - par exemple. C: \ php).

Trouvez le chemin_inclusion paramètres (il est situé à la ~ 708ème ligne). Ajouter C: \ public_html à la fin de la chaîne entre guillemets, séparés par un point-virgule. Le résultat final devrait ressembler à:

 include_path = ".; C: \ php \ PEAR; C: \ public_html"

Enregistrez et fermez le fichier. À l'étape suivante.

Étape 2 - Exécuter Web-Server

Ouvrez l'invite de commande (les fenêtres + R, tapez cmd, frappé Entrer) vous devriez voir quelque chose comme ça, selon votre version de Windows.

 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C: \ Documents and Settings \ nettuts>

Changez votre répertoire actuel pour l'installation PHP en suivant l'exemple ci-dessous:

 C: \ Documents et paramètres \ nettuts> cd C: \ php C: \ php>

Voici la partie la plus importante - l’exécution du serveur Web. Copie…

 php -S 0.0.0.0:8080 -t C: \ public_html router.php

… Et collez-le dans l'invite de commande (bouton droit de la souris, cliquez sur Coller coller). Frappé Entrer. Si tout se passe bien, vous devriez voir quelque chose de similaire à ce qui est montré ci-dessous. Ne fermez pas l'invite de commande. Si vous le faites, vous quitterez également le serveur Web..

 C: \ php> php -S 0.0.0.0:8080 -t C: \ public_html router.php PHP 5.4.0 Le serveur de développement a démarré le ven. Mars 02 09:36:40 2012 L'écoute sur 0.0.0.0:8080 La racine du document est C : \ public_html Appuyez sur Ctrl-C pour quitter.

S'ouvrir http: // localhost: 8080 / index.php dans votre navigateur et vous devriez voir:

 Bonjour Nettuts + Lecteurs!

Voila! Ça y est, codage heureux!

Astuce 1: Faire un php-server.bat fichier avec le contenu suivant: C: \ php \ php -S 0.0.0.0:8080 -t C: \ public_html router.php. Double-cliquez dessus et le serveur est maintenant opérationnel!

Astuce 2: Utilisation 0.0.0.0 au lieu de localhost si vous prévoyez d'accéder à votre serveur à partir d'Internet.


Syntaxe de tableau plus courte

PHP 5.4 offre un nouveau plus court tableau syntaxe:

 $ fruits = array ('pommes', 'oranges', 'bananes'); // "old" way // Identique à la notation littérale de tableau en Javascript $ fruits = ['pommes', 'oranges', 'bananes']; // tableau associatif $ array = ['foo' => 'bar', 'bar' => 'foo'];

Veuillez noter que la méthode "ancienne" est toujours utilisée et le sera toujours. C'est simplement une alternative.


Déréférencement de tableaux

Pas plus de variables temporaires lorsqu'il s'agit de tableaus!

Imaginons que nous voulions récupérer le deuxième prénom d'Alan Mathison Turing:

 echo explode (", 'Alan Mathison Turing') [1]; // Mathison

Sucré; mais ça n'a pas toujours été aussi facile. Avant 5.4, nous devions faire:

 $ tmp = explode (", 'Alan Mathison Turing'); echo $ tmp [1]; // Mathison

Maintenant, si nous voulons obtenir le nom de famille (dernier élément de tableau):

 echo end (explode (", 'Alan Mathison Turing')); // Turing

Cela fonctionne bien, cependant, il va jeter un E_STRICT (Normes strictes: seules les variables doivent être transmises par référence), car elle est devenue une partie intégrante de E_ALL dans error_reporting.

Voici un exemple un peu plus avancé:

 fonction foobar () return ['foo' => ['bar' => 'Bonjour']];  echo foobar () ['foo'] ['bar']; // Bonjour

$ this Dans les fonctions anonymes

Vous pouvez maintenant faire référence à l’instance d’objet à partir de fonctions anonymes (également appelé fermetures) en utilisant $ this.

 class Foo function hello () echo 'Bonjour les nettuts!';  function anonymous () return function () $ this-> hello (); // $ cela n'était pas possible avant;  class Bar function __construct (Foo $ o) // objet de la classe Foo typehint $ x = $ o-> anonymous (); // récupère Foo :: hello () $ x (); // exécuter Foo :: hello () new Bar (nouveau Foo); // Bonjour Nettuts!

Notez que cela pourrait être réalisé avant la 5.4, mais c'était exagéré.

 function anonymous () $ that = $ this; // $ c'est maintenant $ this return function () use ($ that) $ that-> hello (); ; 

est toujours sur

Quel que soit le php.ini réglage, short_open_tag, (tag PHP ouvert et echo) sera toujours disponible. Cela signifie que vous pouvez maintenant utiliser en toute sécurité:

 

… Dans vos modèles au lieu de…

 

Représentation du nombre binaire

Il n'y a que 0b10 types de personnes;
ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

Désormais, les entiers peuvent être spécifiés en notation décimale (base 10), hexadécimale (base 16), octale (base 8) ou binaire (base 2), éventuellement précédée d'un signe (- ou +). Pour utiliser la notation octale, faites précéder le nombre d'un 0 (zéro). Pour utiliser la notation hexadécimale, faites précéder le nombre par 0x. Pour utiliser la notation binaire, faites précéder le nombre par 0b.

Exemple: représentation du nombre 31 (décimal).

 echo 0b11111; // binaire, introduit en PHP 5.4 echo 31; // duh echo 0x1f; // hexadecimal echo 037; // octal

Callable Typehint

La typographie est destinée à ceux qui souhaitent faire de PHP un langage typé plus fort. Les astuces de type ne peuvent être que du objet et tableau tapez depuis PHP 5.1, et appelable depuis PHP 5.4. Type traditionnel faisant allusion avec int et chaîne n'est pas encore supporté.

 function ma_fonction (appelable $ x) return $ x ();  function my_callback_function () return 'Hello Nettuts!'; class Hello static function hi () return 'Hello Nettuts!'; class Hi function hello () return 'Bonjour Nettuts!'; echo ma_fonction (function () return 'Hello Nettuts!';); // fonction anonyme echo my_function ('my_callback_function'); // fonction de rappel echo my_function (['Hello', 'hi']); // nom de classe, méthode statique echo my_function ([(nouveau Hi), 'bonjour']); // objet de classe, nom de méthode

Minuterie haute précision initialisée

$ _SERVER ['REQUEST_TIME_FLOAT'] a été ajouté, avec une précision microseconde (float). Ceci est utile lorsque vous devez calculer le temps d'exécution d'un script..

 echo 'Executed in', round (microtime (true) - $ _SERVER ['REQUEST_TIME_FLOAT'], 2), 's';

__destruct () (ou résumé)

Dans l’ensemble, PHP 5.4 offre de nombreuses améliorations. Maintenant, à vous de récupérer une nouvelle copie de php.net et de créer du code PHP de qualité orienté objet!

?