Le premier PHP 5.5 alpha a été publié. Après avoir eu le temps de le tester et de l'expérimenter, nous pouvons maintenant vous présenter notre aperçu détaillé de ce que vous devez attendre!
Si vous souhaitez suivre cet article, vous devrez installer PHP 5.5 pour vous-même. Vous pouvez trouver le lien vers le paquet source ici. De plus, si vous avez besoin du fichier binaire Windows, vous pouvez le récupérer à partir de la même page..
Une fois le code source téléchargé, extrayez le tout dans un dossier et accédez-y avec votre programme Terminal préféré. Vous pouvez installer PHP où vous voulez, mais par commodité, je vais créer un répertoire à la racine de mon lecteur, appelé PHP5.5
. Pour créer un nouveau dossier et faire en sorte que votre utilisateur en soit le propriétaire, tapez ce qui suit dans votre terminal:
sudo mkdir /PHP5.5 sudo chown nom d'utilisateur /PHP5.5
Ensuite, vous devez décider quelles extensions et fonctionnalités vous souhaitez installer avec votre copie de PHP. Puisqu'il s'agit d'une version Alpha, destinée uniquement à des tests, je ne vais pas m'inquiéter de la rendre entièrement fonctionnelle. Pour ce tutoriel, je vais seulement installer cURL, mais vous voudrez peut-être ajouter d'autres choses, telles que le support de MySQL ou le support zip. Pour afficher une liste complète des options de configuration, exécutez:
./ configure -h
Outre l’option d’installation de cURL, il convient de définir deux autres propriétés: préfixe
et with-config-file-path
option. Ces deux propriétés définissent l’emplacement de l’installation PHP et la .ini
fichier, respectivement. Donc, dans le terminal, tapez:
./ configure --prefix = / PHP5.5 --with-config-chemin_fichier = / PHP5.5 --with-curl = ext / curl make make install
La première ligne configure PHP avec cURL et définit l'emplacement dans le dossier que nous avons créé précédemment. Les deux lignes suivantes construisent PHP et déplacent les fichiers dans le répertoire spécifié. L'étape suivante consiste à copier l'échantillon php.ini
fichier dans le dossier PHP. Pour cela, lancez:
cp php.ini-development /PHP5.5/php.ini
Vous devriez maintenant avoir tout installé correctement. Le moyen le plus simple de tester cette nouvelle version consiste à exécuter son serveur Web intégré. Accédez au poubelle
dossier à l'intérieur du PHP5.5
répertoire (cd /PHP5.5/bin
) et tapez ./ php -t / Path / To / Directory -S 0.0.0.0:4444
.
-t
Cette option définit le répertoire racine du serveur (c’est-à-dire l’emplacement où vous placerez vos fichiers PHP). -S
property définit l'adresse IP et le numéro de port auxquels le serveur doit se lier. En utilisant 0.0.0.0
pour l'adresse IP indique au serveur d'écouter toutes les adresses IP (par exemple, localhost, 127.0.0.1, 192.168.0.100, etc.). Si tout se passe bien, vous devriez recevoir un message vous indiquant que le serveur écoute sur l'adresse IP / le port spécifié et vous indiquera la racine du document à partir de laquelle il sert. Nous pouvons maintenant commencer à jouer avec les nouvelles fonctionnalités!
Les générateurs vous permettent de créer des fonctions personnalisées, qui conservent l’état entre les exécutions..
Le plus gros ajout à PHP 5.5 doit être des générateurs. Les générateurs vous permettent de créer des fonctions personnalisées, qui conservent l'état entre les exécutions. Il fonctionne avec un nouveau mot clé, appelé rendement
, qui peut être utilisé dans une fonction pour les données d'entrée et de sortie.
Essentiellement, lorsque la fonction atteint une ligne contenant la commande de rendement, PHP gèle l'exécution de la fonction et revient à l'exécution du reste de votre programme. Lorsque vous appelez à la fonction pour qu'elle continue - soit en lui disant de continuer, soit en lui envoyant des données - PHP reviendra à la fonction et reprendra là où elle s'est arrêtée, en préservant les valeurs de toutes les variables locales définies jusque-là..
Cela peut sembler un peu cool au début, mais si vous y réfléchissez, cela ouvre la porte à de nombreuses options de conception intéressantes. Tout d'abord, il simule les effets d'autres langages de programmation dotés de "Lazy Evaluation", comme Haskell. Cela seul permet de définir des ensembles de données infinis et de modéliser des fonctions mathématiques après leur définition réelle. De plus, vous n'avez pas à créer autant de variables globales; si une variable est uniquement destinée à une fonction spécifique, vous pouvez l'inclure dans un générateur, et des éléments tels que des compteurs sont automatiquement générés par le générateur lui-même sous la forme de la clé de l'objet renvoyé..
Eh bien c'est assez de théorie pour l'instant; jetons un coup d'oeil à un générateur en action. Pour commencer, naviguez jusqu'à la racine du document que vous avez définie lors de l'exécution du serveur PHP et créez un fichier appelé "index.php". Maintenant, ouvrez le fichier et tapez ce qui suit:
fonction fibonacci () $ a = 0; $ b = 1; while (true) $ a = $ a + $ b; $ b = $ a - $ b; rendement $ a;
C'est la fonction "Hello World" des jeux de données infinis. C'est une fonction qui produira tous les nombres de fibonacci. Pour utiliser le générateur, il vous suffit de taper:
$ fib = fibonacci (); $ fib-> current (); $ fib-> next (); $ fib-> current (); //…
Qu'est-ce qui se passe ici est que nous faisons $ fib
un objet générateur, puis vous avez accès aux commandes sous-jacentes, telles que actuel()
et suivant()
. le actuel()
function renvoie la valeur actuelle du générateur; c'est la valeur de tout ce que vous avez donné dans la fonction - dans notre cas, $ a
. Vous pouvez appeler cette fonction plusieurs fois et vous obtiendrez toujours la même valeur, car le actuel()
la fonction n'indique pas au générateur de continuer à évaluer son code. C'est là que le suivant()
la fonction intervient; suivant()
est utilisé pour dégeler l'itérateur et continuer avec la fonction. Puisque notre fonction est dans un infini tandis que
boucle, il va juste geler à nouveau par la prochaine rendement
commande, et nous pouvons obtenir la valeur suivante avec un autre appel à actuel()
.
L'avantage pour les générateurs est que les variables locales sont persistantes.
Si vous deviez accomplir quelque chose comme cela dans le passé, vous devriez mettre une sorte de pour
boucle qui pré-calcule les valeurs dans un tableau et s’arrête après un certain nombre d’itérations (par exemple 100), afin de ne pas surcharger PHP. L'avantage pour les générateurs est que les variables locales sont persistantes, et vous pouvez simplement écrire ce que la fonction est censée faire, en tenant compte de la manière dont elle devrait le faire. Ce que je veux dire par là, c'est que vous écrivez simplement la tâche sans vous soucier des variables globales et du nombre d'itérations à effectuer..
L'autre côté rendement
peut être utilisé est de recevoir des données. Cela fonctionne de la même manière que précédemment: quand la fonction arrive à une ligne avec le rendement
mot-clé, il s’arrêtera mais, au lieu de lire des données avec actuel()
, nous allons lui donner des données avec le envoyer()
une fonction. Voici un exemple de cela en action:
fonction Logger () $ log_num = 1; while (true) $ f = rendement; echo "Log #". $ log_num ++. ":". $ f; $ logger = Logger (); pour ($ i = 0; $ i<10; $i++) $logger->envoyer ($ i * 2);
C'est un générateur simple pour afficher un message de log. Tous les générateurs démarrent en pause; un appel à envoyer
(ou même actuel
) démarre le générateur et continue jusqu'à ce qu'il atteigne un rendement
commander. le envoyer
La commande entrera ensuite les données envoyées et poursuivra le traitement de la fonction jusqu’à la prochaine rendement
. Chaque appel ultérieur à envoyer
traitera une boucle; il entrera les données envoyées dans $ f
, puis continuez jusqu'à ce qu'il revienne à la prochaine rendement
.
Alors pourquoi ne pas simplement mettre cela dans une fonction régulière? Vous pourriez le faire, mais vous auriez alors besoin d’une variable globale distincte pour suivre le numéro de journal ou de la création d’une classe personnalisée..
Ne pensez pas aux générateurs comme un moyen de faire quelque chose qui n’a jamais été possible, mais plutôt comme un outil permettant de faire les choses plus rapidement et plus efficacement..
Même des ensembles infinis étaient possibles, mais il faudrait à chaque fois retraiter la liste du début (c’est-à-dire effectuer le calcul jusqu’à l’index actuel) ou stocker toutes ses données dans des variables globales. Avec les générateurs, votre code est beaucoup plus propre et précis.
pour chaque
Les déclarationsLa prochaine mise à jour que j’ai trouvée très utile est la possibilité de décomposer un tableau imbriqué en une variable locale dans un fichier. pour chaque
déclaration. le liste
construct existe depuis un moment (depuis PHP4); il mappe une liste de variables à un tableau. Donc, au lieu d'écrire quelque chose comme:
$ data = array ("John", "Smith", "032-234-4923"); $ fName = $ data [0]; $ lName = $ data [1]; $ cell = $ data [2];
Vous pouvez simplement écrire:
$ data = array ("John", "Smith", "032-234-4923"); liste ($ fName, $ lName, $ cell) = $ data;
Le seul problème était que, si vous vouliez mapper un tableau de tableaux (un tableau imbriqué), vous ne pouviez pas les parcourir avec un pour chaque
boucle. Au lieu de cela, vous devrez attribuer le pour chaque
résultat à une variable locale, puis mappez-le avec un liste
construire uniquement à l'intérieur de la boucle.
À partir de la version 5.5, vous pouvez supprimer l'homme du milieu et nettoyer votre code. Voici un exemple de l'ancienne méthode, par rapport à la nouvelle:
// - Ancienne méthode - // foreach ($ parentArr en tant que $ childArr) list ($ un, $ deux) = $ childArr; // Poursuivre avec la boucle // - Nouvelle méthode - // foreach ($ parentArr as list ($ un, $ deux)) // Continuer avec boucle
L'ancienne méthode ne semble pas trop compliquée, mais elle est compliquée et rend le code moins lisible..
Sur la carte graphique intégrée de mon Mac, j'ai pu parcourir plus de 200 millions de hachages par seconde.!
Maintenant, celui-ci nécessite un peu de connaissance des hachages et du cryptage pour bien apprécier.
Le moyen le plus simple de hacher un mot de passe en PHP a été d'utiliser quelque chose comme MD5 ou un algorithme SHA. Le problème avec les fonctions de hachage comme celles-ci est qu’elles sont incroyablement faciles à calculer. Ils ne sont plus utiles pour la sécurité. De nos jours, ils ne devraient être utilisés que pour vérifier l'intégrité d'un fichier. J'ai installé un hachage de GPU sur mon ordinateur pour tester cette affirmation. Sur la carte graphique intégrée de mon Mac, j'ai pu parcourir plus de 200 millions de hachages par seconde! Si vous étiez dédié et que vous investissiez dans une configuration multi-graphique haut de gamme, vous pourriez potentiellement passer par des milliards de hachages une seconde.
La technologie utilisée pour ces méthodes ne devait pas durer.
Alors, comment résolvez-vous ce problème? La réponse est que vous posez un fardeau ajustable sur l'algorithme. Ce que je veux dire par là, c'est qu'il est difficile de traiter. Cela ne devrait pas prendre quelques secondes par hachage, car cela gâcherait l'expérience de l'utilisateur. Mais, imaginez que vous avez mis une demi-seconde à générer. Ensuite, un utilisateur ne se rendrait probablement même pas compte du délai, mais une personne qui tenterait de la forcer brutalement devrait effectuer des millions d’essais - sinon plus - et toutes les demi-secondes représenteraient des décennies et des siècles. Qu'en est-il du problème des ordinateurs qui deviennent de plus en plus rapides? C'est là qu'intervient la partie "ajustable": de temps en temps, vous augmentez la complexité pour générer un hachage. De cette façon, vous pouvez vous assurer que cela prend toujours le même temps. C’est ce que les développeurs de PHP essaient d’encourager les gens à faire.
La nouvelle bibliothèque PHP est un "flux de travail" de hachage dans lequel les utilisateurs peuvent facilement chiffrer, vérifier et mettre à niveau les hachages et leurs complexités respectives au fil du temps. Pour le moment, il n’existe que l’algorithme bcrypt, mais l’équipe PHP a ajouté une option, nommée default, que vous pouvez utiliser. Il mettra automatiquement à jour vos hachages avec l'algorithme le plus sécurisé, lorsqu'ils en ajouteront de nouveaux.
Le fonctionnement de bcrypt est qu’il exécute votre mot de passe grâce au cryptage blowfish X
nombre de fois, mais au lieu d’utiliser Blowfish avec une clé pour pouvoir l’inverser ultérieurement, il passe le cycle précédent comme clé de la prochaine itération. Selon Wikipedia, votre mot de passe passe par 2
au X
montant. C'est la partie que vous pouvez ajuster. Disons que vous voulez utiliser un niveau de coût de 5: bcrypt utilisera votre hash 2
au 5
, ou 32 fois. Cela peut sembler un nombre peu élevé, mais puisque le paramètre de coût ajuste la fonction de façon exponentielle, si vous le modifiiez à 15, la fonction l'exécuterait 32768 fois. Le niveau de coût par défaut est 10, mais cela est configurable dans le code source..
Avec la théorie sur la route, jetons un coup d'oeil à un exemple complet.
$ pass = "Secret_Password"; $ hash = password_hash ($ pass, PASSWORD_BCRYPT, array ('cost' => 12, 'salt' => "vingt.two.letter.salt")); if (password_verify ($ pass, $ hash)) if (password_needs_rehash ($ hash, PASSWORD_DEFAULT, array ('cost' => 15))) $ hash = password_hash ($ pass, PASSWORD_DEFAULT, array ('cost' => 15))) $ hash = password_hash ($ pass, PASSWORD_DEFAULT, array ('cost' => 15)); // Faites quelque chose avec hash ici.
le password_hash
La fonction accepte trois paramètres: le mot à hacher, une constante pour l’algorithme de hachage et une liste optionnelle de paramètres, qui incluent le sel et le coût. La fonction suivante, password_verify
, s'assure qu'une chaîne correspond au hachage après le cryptage et, enfin, le password_needs_rehash
fonction s'assure qu'un hachage suit les paramètres donnés. Par exemple, dans notre cas, nous avons défini le coût de hachage à douze, mais ici, nous en spécifions quinze, donc la fonction retournera vrai
, ce qui signifie qu'il doit être ressaisi.
Vous avez peut-être remarqué que, dans le password_verify
et password_needs_rehash
fonctions, vous n'avez pas à spécifier la méthode de hachage utilisée, le sel ou le coût. C'est parce que ces détails sont ajoutés à la chaîne de hachage.
Les sels sont utilisés pour empêcher le pré-calcul des hachages dans la table arc-en-ciel.
La raison pour laquelle il est acceptable de grouper le coût et le sel avec le hachage et de ne pas le garder secret, c'est en raison de la façon dont le système associe ses forces. Le coût n’a pas besoin d’être un secret, car c’est un nombre qui alourdit suffisamment le serveur. Ce que je veux dire par là, c'est que même si quelqu'un obtient votre hash et détermine que votre niveau de coût nécessite 1/2 seconde de calcul, il saura à quel niveau bruteforce se situer, mais cela lui prendra trop de temps à se fissurer (par exemple ).
Les sels sont utilisés pour éviter que les hachages soient précalculés dans une table arc-en-ciel.
Une table arc-en-ciel est fondamentalement un magasin de valeurs-clés avec un "dictionnaire" de mots avec leurs hachages correspondants comme clés..
Tout ce que quelqu'un a à faire est de pré-calculer suffisamment de mots communs - ou, pire, toutes les possibilités de chaînes de caractères - et ensuite, ils peuvent rechercher le mot pour un hachage donné instantanément. Voici un exemple de la façon dont les sels peuvent être utiles: supposons que votre mot de passe soit le mot "mot de passe". Normalement, c'est un mot assez courant. ce serait probablement dans leur table arc-en-ciel. Qu'est-ce qu'un sel fait est qu'il ajoute une chaîne aléatoire à votre mot de passe; ainsi, au lieu de hacher "mot de passe", c'est vraiment "hachage passwordRandomSalt524% # $ &." Ceci est considérablement moins susceptible d'être pré-calculé.
Alors, pourquoi les sels sont-ils généralement considérés comme des informations privées? Traditionnellement, avec des choses comme MD5 et autres, une fois que quelqu'un connaît votre sel, il peut recommencer à exécuter ses techniques de force brute, sauf qu'il ajoutera votre sel à la fin. Cela signifie qu'au lieu de forcer votre chaîne de mot de passe aléatoire, ils imposent un mot de passe standard beaucoup plus court et ne font qu'ajouter le sel. Mais heureusement, puisque nous avons la configuration du facteur coût, il serait trop long de calculer chaque hachage avec le nouveau sel.
Récapituler: Les sels garantissent que le précalcul d'un hachage ne peut plus être utilisé sur un autre hachage, et le paramètre de coût permet de s'assurer qu'il n'est pas possible de calculer chaque hachage à partir de zéro. Les deux sont nécessaires, mais ni l'un ni l'autre ne doivent être secrets.
C'est pourquoi la fonction les attache au hachage.
N'oubliez pas que votre sel importe peu, tant qu'il est unique.
Maintenant, si vous comprenez ce que le sel fait, alors vous devriez savoir qu'il est préférable de laisser la fonction en générer un de manière aléatoire, plutôt que d'entrer votre propre mot. Bien que cette fonctionnalité soit fournie, vous ne voulez pas que tous vos hachages aient le même sel. Si tel est le cas, si quelqu'un réussissait à pénétrer dans votre base de données, il lui suffirait de calculer la table une fois. Comme ils auront le niveau de sel et le niveau de coût, cela peut prendre un certain temps, mais avec suffisamment d’ordinateurs, une fois qu’ils le traiteront, ils auront débloqué l’ensemble de vos hachages. En tant que tel, il vaut mieux ne pas en attribuer un et laisser PHP générer aléatoirement un.
Jusqu'à présent, il n'y avait pas de moyen facile d'envoyer du courrier via SMTP.
cURL est un autre domaine dans lequel l’équipe PHP a ajouté de nouvelles additions et mises à jour intéressantes. Depuis la version 5.5, nous prenons désormais en charge les directives FTP, les directives pour définir les cookies, les directives pour SSL et les comptes, ainsi que les directives pour les protocoles SMTP et RTSP, entre autres. Il serait trop long de toutes les aborder, mais vous pouvez vous référer à la page NEWS pour consulter la liste complète..
Cependant, je souhaite parler d'un ensemble en particulier qui m'a le plus intéressé: l'ensemble de directives SMTP. Jusqu'à présent, il n'y avait pas de moyen facile d'envoyer du courrier via SMTP. Vous devrez soit modifier le programme sendmail de votre serveur pour envoyer des messages via un serveur SMTP, soit télécharger une bibliothèque tierce, ce qui n’est pas la meilleure option. Avec les nouvelles directives CURL, vous pouvez parler directement avec un serveur SMTP, tel que Gmail, en quelques lignes seulement..
Pour mieux comprendre le fonctionnement du code, il est utile d’en apprendre un peu plus sur le protocole SMTP. Ce qui se passe, c’est que votre script se connecte au serveur de messagerie, le serveur de messagerie reconnaît votre connexion et vous renvoie ses informations (par exemple, domaine, logiciel). Vous devez ensuite répondre au serveur avec votre adresse. En tant que protocole bavard (mais poli), SMTP vous accueillera pour que vous sachiez qu'il a été reçu..
À ce stade, vous êtes prêt à envoyer des commandes. Les commandes nécessaires sont les COURRIER DE
et le RCPT TO
; ces mappes directement aux directives cURL, CURLOPT_MAIL_FROM
et CURLOPT_MAIL_RCPT
, respectivement. Tu n'en as qu'un de
adresse, mais vous pouvez spécifier plusieurs à
adresses. Une fois que cela est fait, vous pouvez simplement appeler la commande, LES DONNÉES
, et commencez à envoyer le message réel et les en-têtes de message. Pour mettre fin à la transmission, vous devez envoyer une ligne vierge, suivie d'un point, suivie d'une autre ligne vierge. CURL s’occupe de ces deux dernières parties (c’est-à-dire la commande DATA et la séquence de fin), nous n’avons donc pas à nous en préoccuper.
Donc, en PHP, tout ce que nous avons à faire est de spécifier le mail de
et à
directives, puis envoyez le message réel - le tout dans cURL. Pour rendre les choses très simples, je vais créer une classe, appelée Gmail
, qui acceptera un nom d'utilisateur / mot de passe et les détails du message, et il enverra des emails via votre compte Gmail.
Je vais coller la classe entière ci-dessous, puis nous allons la parcourir ligne par ligne, car elle est en grande partie composée de caractères passe-partout..
classe Gmail private $ mail; email privé $; pass privé; fonction publique __construct ($ email, $ pass) $ this-> email = $ email; $ this-> pass = $ pass; fonction privée mailGen () $ from = rendement; $ to = rendement; $ sujet = rendement; $ body = rendement; rendement "DE: <" . $from . ">\ n "; céder" à: <" . $to . ">\ n "; rendement" Date: ". date (" r ")." \ n "; rendement" Sujet: ". sujet." \ n "; rendement" \ n "; rendement $ body; rendement" "; fonction publique getLine () $ resp = $ this-> mail-> actuel (); $ this-> mail-> next (); return $ resp; fonction publique send ($ to, $ subject, $ body) $ this-> mail = $ this-> mailGen (); $ this-> mail-> envoyer ($ this-> email); $ this-> mail-> envoyer ($ to); $ this-> mail- > send ($ subject); $ this-> mail-> send ($ body); $ ch = curl_init ("smtps: //smtp.gmail.com: 465"); curl_setopt ($ ch, CURLOPT_MAIL_FROM, "<" . $this->email . ">"); curl_setopt ($ ch, CURLOPT_MAIL_RCPT, array ("<" . $to . ">")); curl_setopt ($ ch, CURLOPT_USERNAME, $ this-> email); curl_setopt ($ ch, CURLOPT_PASSWORD, $ this-> pass); curl_setopt ($ ch, CURLOPT_USE_SSL, CURLUSESSL_ALL) , true); optionnel si vous voulez voir la transaction curl_setopt ($ ch, CURLOPT_READFUNCTION, array ($ this, "getLine")); return curl_exec ($ ch);
Espérons que votre réaction à ce code a été quelque chose comme: "Wow, c'est l'abréviation d'une implémentation SMTP complète!" Juste au cas où cela semble compliqué, nous allons le passer en revue. Nous commençons par définir trois variables privées: une pour le générateur de messages, une pour stocker le courrier électronique de l'utilisateur et une pour stocker son mot de passe. Ensuite, nous avons le constructeur, qui stocke l’email et le mot de passe pour plus tard; ceci afin de pouvoir envoyer plusieurs courriels sans avoir à le saisir à chaque fois. le mailGen
function est un générateur PHP 5.5, qui est utilisé pour envoyer le message selon le protocole de messagerie directement dans cURL. Cela est nécessaire parce que la commande utilisée dans cURL pour entrer les données est destinée à la lecture d'un fichier, ligne par ligne. Donc, au lieu d’avoir une variable supplémentaire pour nous rappeler quelle ligne nous étions en train de construire, j’ai utilisé un générateur qui enregistre sa position.
La fonction suivante est utilisée pour parcourir le générateur. Nous ne pouvons pas entrer le générateur directement dans cURL; nous avons besoin d'un intermédiaire. cURL continuera à appeler cette fonction jusqu'à ce que la ligne soit vide. C'est pourquoi la dernière ligne du générateur renvoie une chaîne vide.
La dernière fonction de la classe est celle qui relie tout. Nous initialisons d'abord le générateur à la variable privée définie précédemment. Ensuite, nous envoyons au générateur toutes les informations requises et créons une nouvelle variable cURL. Nous avons déjà discuté CURLOPT_MAIL_FROM
et CURLOPT_MAIL_RCPT
; ils mappent aux commandes SMTP équivalentes. CURLOPT_MAIL_RCPT
est un tableau pour que vous puissiez entrer plusieurs adresses. Ensuite, nous devons ajouter les informations d'identification pour vous connecter à GMail. J'ai laissé l'option verbeuse ici; Décommentez-le si vous souhaitez voir la transaction SMTP complète. Les deux dernières lignes définissent simplement la fonction où CURL doit extraire les données du message, puis nous renvoyons les résultats..
C'est un bon couple de lignes, mais rien trop compliqué. Pour utiliser cette fonction, créez une nouvelle instance de cette classe et appelez la fonction d'envoi. Voici un exemple d'envoi de deux courriels avec ceci:
$ gmail = new Gmail ("[email protected]", "mot de passe"); $ gmail-> send ("[email protected]", "Objet de l'email", "Bonjour Guy, \ n Que se passe-t-il?"); $ gmail-> send ("[email protected]", "Objet différent", "Message important.");
Pour finir cet article, je passerai en revue certaines des plus petites mises à jour de PHP 5.5.
Une option intéressante est la prise en charge supplémentaire du déréférencement de chaîne / chaîne constante. Cela signifie que vous pouvez accéder à des caractères individuels dans une chaîne statique, comme si la chaîne était un tableau de caractères. Voici un exemple rapide:
echo "Hello World" [1]; // cette ligne fera écho à 'e' echo ["un", "deux", "trois"] [2]; // cette echos "trois"
Ensuite, nous avons le enfin
mot-clé. Ceci est ajouté à la fin d'un bloc try / catch; indique à PHP que, que l’essai ou le catch ait été appelé ou non, vous souhaitiez traiter le enfin
section. Ceci est utile dans les situations où vous souhaitez gérer le résultat d'une instruction try / catch. Au lieu de répéter le code dans les deux cas, vous pouvez simplement mettre la partie "risquée" dans le bloc try / catch et tous les traitements dans le bloc finally.
Une autre utilisation suggérée par le créateur comme meilleure pratique consiste à placer tout le code de nettoyage dans le bloc finally. Ainsi, vous ne tenterez pas, par exemple, de fermer le même flux plusieurs fois (par exemple, votre code est bloqué et est entré dans le bloc catch après avoir déjà été fermé, et vous essayez de le refermer)..
La dernière chose à noter concerne la façon dont l'extension MySQL sera obsolète dans cette nouvelle version. Vous devriez convertir votre code soit en mysqli
ou AOP
extensions à la place. Bien que cela ait été longtemps considéré comme un anti-modèle, il est agréable que l'équipe de PHP le déconseille officiellement..
Bien qu'il y ait certainement plus de mises à jour à explorer, les éléments de cet article représentent ce que je considère être le plus important et le plus excitant..
Merci d'avoir lu; J'espère que vous avez appris un peu! Comme toujours, si vous avez des commentaires ou des questions, passez à la conversation ci-dessous et parlons-en.!