这是我们期待已久的 PHP 7 系列文章的第二篇。点此阅读 第一篇本文系 OneAPM 工程师编译整理。
也许你已经知道,重头戏 PHP 7 的发布将在今年到来!现在,让我们来了解一下,新版本有哪些新功能与改进。
在本系列的 第一篇 ,我们介绍了 PHP 7 中最重要的一些不兼容性修复以及两大新特性。在本文中,我们将了解 PHP 7 的另外六大功能。
Unicode 代码点转义语法
新增加的转义字符?? \u,允许我们在 PHP 字符串内明确指定 Unicode 字符代码点(以十六进制):
此处使用的语法为 \u{CODEPOINT} 。例如这个绿色的心形,?, 可以表示为 PHP 字符串 __"\u{1F49A}"__。
Null 合并操作符
另一个新的操作符?? Null 合并操作符 ?? ,其实是传说中的三目运算符 。如果它不是 Null ,将返回左操作数,否则返回右操作数。
重点在于,如果左操作数是一个不存在的变量,也不会引起注意。这就像 isset() ,而不像 ?: 短三目运算符。
你还可以链接该操作符,从而返回给定集合的第一个非 null 值。
$config = $config ?? $this->config ?? static::$defaultConfig;
调用之上绑定闭包
之前,在 PHP 5.4 添加的 Closure->bindTo() 与 Closure::bind() 允许你改变 $this 和调用范围的绑定,同时或单独地,创建一个重复闭包。
现在,PHP 7 增加了在调用时达到上述功能的简便方法,通过 Closure->call() 将 $this 和调用范围绑定至同一对象 。该方法将对象作为首个参数,然后是传到闭包中的其他参数,如下:
class HelloWorld { private $greeting = "Hello";}$closure = function($whom) { echo $this->greeting . ' ' . $whom; }$obj = new HelloWorld();$closure->call($obj, 'World'); // Hello World
组使用声明
如果你曾经从同一命名空间导入多个类,而你的 IDE 能自动完成,你肯定会很高兴。对于其他人,为了简便起见,PHP 7 现在有了 组使用声明。这让你快速清楚地指定多次相似的 导入:
// Originaluse Framework\Component\SubComponent\ClassA;use Framework\Component\SubComponent\ClassB as ClassC;use Framework\Component\OtherComponent\ClassD;// With Group Useuse Framework\Component\{ SubComponent\ClassA, SubComponent\ClassB as ClassC, OtherComponent\ClassD};
你也可以在常量导入与函数导入时与 use function、use const 一起使用它。同时也支持混合导入。
use Framework\Component\{ SubComponent\ClassA, function OtherComponent\someFunction, const OtherComponent\SOME_CONSTANT};
生成器改进
生成器返回表达式生成器有两大新功能。首先是 生成器返回表达式,它允许你在生成器(成功)完成时返回一个值。
PHP 7 之前,如果你尝试返回任何值将导致错误。然而,现在你可以调用 $generator->getReturn() 来获取返回值。
如果生成器尚未返回,或抛出未捕获的异常,调用 $generator->getReturn() 将抛出一个异常。
如果生成器已完成,但没有返回,则返回空。
举例如下:
function gen() { yield "Hello"; yield " "; yield "World!"; return "Goodbye Moon!";}$gen = gen();foreach ($gen as $value) { echo $value; }// Outputs "Hello" on iteration 1, " " on iterator 2, and "World!" on iteration 3echo $gen->getReturn(); // Goodbye Moon!生成器委托
第二个功能则更令人兴奋:生成器委托。这允许你返回另一个可迭代结构,它可以迭代自身??不论是数组,迭代器,还是另一个生成器。
重要的是,子结构的迭代是由最外层的原始循环完成的,如同单一的平面结构,而非递归结构。
当向生成器发送数据或异常时也同理。这些数据或异常会直接传到子结构中,就像被调用直接控制。
这是使用了
function hello() { yield "Hello"; yield " "; yield "World!"; yield from goodbye();}function goodbye() { yield "Goodbye"; yield " "; yield "Moon!";}$gen = hello();foreach ($gen as $value) { echo $value;}
在每次迭代中,将输出:
"Hello"
" "
"World!"
"Goodbye"
" "
"Moon!"
值得一提的一点警告是,由于子结构可以产生自己的键,多次迭代完全可能返回相同的键??如果这对你很重要,你需要自己想办法避免。
内部异常
在 PHP 中,致命和可捕获的致命错误一直无法处理,或者很难处理 。但有了内部异常 以后,许多这类错误现在都可以抛出异常了。
现在,当一个致命或可捕获的致命错误发生时,会抛出一个异常,允许你从容地处理它。如果你不进行处理,它将成为未捕获的异常这类传统的致命错误。
这些异常是 \EngineException 对象。它们不像所有的用户异常,并不继承自 \Exception 类。这是为了确保现在捕获 \Exception 类的代码今后不会开始捕获致命错误。从而保持向后兼容性。
在将来,如果你想同时捕获传统异常和内部异常,你需要捕获他们新的共享父类,\BaseException。
此外, eval()’ed 代码中的解析错误会抛出 \ParseException,而类型不匹配将抛出一个 \TypeException。
如下例:
try { nonExistentFunction();} catch (\EngineException $e) { var_dump($e);}object(EngineException)#1 (7) { ["message":protected]=> string(32) "Call to undefined function nonExistantFunction()" ["string":"BaseException":private]=> string(0) "" ["code":protected]=> int(1) ["file":protected]=> string(17) "engine-exceptions.php" ["line":protected]=> int(1) ["trace":"BaseException":private]=> array(0) { } ["previous":"BaseException":private]=> NULL}
OneAPM for PHP 能够深入到所有 PHP 应用内部完成应用性能管理 能够深入到所有 PHP 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。
即将到来!
距离 PHP 7.0.0 发布只有八个月了(译者翻译时所剩时日不多),该版本很可能是 PHP 历史上性能最快的一版。虽然现在它只具备内部测试品质(目前 RC5 已可以下载) ,但 PHP 7 的确让人期待。
并且,你能帮助它变得更好。
测试你的代码
使用 Rasmus’s 的 PHP 7 vagrant 沙盒,开始运行你的测试套件,或执行常规的质量检验。向项目报告错误,并定期重试。
帮助 GOPHP7-EXT
使用 PHP 7 的一大障碍是确保更新所有扩展使之与新的 Zend Engine 3 兼容。
如果你使用的扩展较为小众,没有得到其维护者足够的关注??或者你使用自己的扩展??请查看 GoPHP7-ext 项目从而确保 PHP 7 发布后一切都准备妥当。
书写文档
PHP 7 中的每个新功能都有一个 RFC 。你可以在 PHP.net 维基 找到他们,并在此基础上写新文档。你可以在 在线GUI 环境下 写,包括提交(如果你有 karma)或提交补丁以供审核。
总结
PHP 7 将是伟大的!
PHP是全世界最好的语言,没有之一 :)
抓紧测试你的应用程序。帮助迁移扩展。
P.S. 你已经在使用 PHP 7 了么?你对新功能有何感受?是否有你不满意,或者不喜欢的地方?你认为你会何时升级?让我们知道你的想法!
分享你的想法,尽在 APM俱乐部!
OneAPM for PHP 能够深入到所有 PHP 应用内部完成应用性能管理 能够深入到所有 PHP 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。

PHP est un langage de script côté serveur utilisé pour le développement Web dynamique et les applications côté serveur. 1.Php est un langage interprété qui ne nécessite pas de compilation et convient au développement rapide. 2. Le code PHP est intégré à HTML, ce qui facilite le développement de pages Web. 3. PHP traite la logique côté serveur, génère une sortie HTML et prend en charge l'interaction utilisateur et le traitement des données. 4. PHP peut interagir avec la base de données, traiter la soumission du formulaire et exécuter les tâches côté serveur.

PHP a façonné le réseau au cours des dernières décennies et continuera de jouer un rôle important dans le développement Web. 1) PHP est originaire de 1994 et est devenu le premier choix pour les développeurs en raison de sa facilité d'utilisation et de son intégration transparente avec MySQL. 2) Ses fonctions principales incluent la génération de contenu dynamique et l'intégration à la base de données, ce qui permet au site Web d'être mis à jour en temps réel et affiché de manière personnalisée. 3) La large application et l'écosystème de PHP ont motivé son impact à long terme, mais il fait également face à des mises à jour de version et à des défis de sécurité. 4) Les améliorations des performances ces dernières années, telles que la sortie de PHP7, lui permettent de rivaliser avec les langues modernes. 5) À l'avenir, PHP doit faire face à de nouveaux défis tels que la conteneurisation et les microservices, mais sa flexibilité et sa communauté active le rendent adaptable.

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.

PHP n'est pas mort. 1) La communauté PHP résout activement des problèmes de performance et de sécurité, et PHP7.x améliore les performances. 2) PHP convient au développement Web moderne et est largement utilisé dans les grands sites Web. 3) PHP est facile à apprendre et le serveur fonctionne bien, mais le système de type n'est pas aussi strict que les langages statiques. 4) Le PHP est toujours important dans les domaines de la gestion du contenu et du commerce électronique, et l'écosystème continue d'évoluer. 5) Optimiser les performances via OPCACHE et APC et utilisez des modèles OOP et de conception pour améliorer la qualité du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des exigences du projet. 1) PHP convient au développement Web, facile à apprendre, riche en ressources communautaires, mais la syntaxe n'est pas assez moderne, et les performances et la sécurité doivent être prêts attention. 2) Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et facile à apprendre, mais il y a des goulots d'étranglement dans la vitesse d'exécution et la gestion de la mémoire.

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Dreamweaver CS6
Outils de développement Web visuel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.