当前位置:网站首页>Sélection de nouvelles fonctionnalités pour la version PHP - PHP 8.0x
Sélection de nouvelles fonctionnalités pour la version PHP - PHP 8.0x
2022-07-18 10:48:00 【Chon. Wang.】
Extrait de cet article php.net
1. NouveauParamètres nommésLa fonction de
La liste des paramètres vous permet de passer des informations à une fonction,Une liste d'expressions séparées par des virgules.Fonction avant l'appel réel,Les paramètres de valeur sont évalués de gauche à droite(Tôt.Évaluer).
PHP Prise en charge du passage des paramètres par valeur(Par défaut),Passer les paramètres par référence Et Paramètres par défaut.- Oui. Liste des paramètres de longueur variable Et Paramètres nommés.
1.1 Syntaxe des paramètres nommés
<?php
myFunction(paramName: $value);
array_foobar(array: $value);
// Non pris en charge.
function_name($variableStoringParamName: $value);
1.2 Participer à la comparaison des paramètres nommés par transfert de position
<?php
// Passer les paramètres en utilisant l'ordre:
array_fill(0, 100, 50);
// Utiliser des paramètres nommés:
array_fill(start_index: 0, count: 100, value: 50);
2. NouveauNotesLa fonction de
3. Propriétés du constructeur promues
PHP 8.0.0 Lève - toi., Les paramètres du constructeur peuvent également être promus aux propriétés de la classe en conséquence . Le comportement de l'attribution des paramètres du constructeur aux propriétés de la classe est très courant ,Sinon, il ne peut pas fonctionner. La fonction de levage du constructeur facilite ce scénario . L'exemple ci - dessus peut donc être réécrit de la manière suivante :
<?php
class Point {
public function __construct(protected int $x, protected int $y = 0) {
}
}
Lorsque le paramètre constructeur a le contrôle d'accès (visibility modifier)Heure,PHP Il sera utilisé à la fois comme attribut objet et comme paramètre constructeur , Et assigner une valeur à la propriété . Le constructeur peut être vide , Ou inclure d'autres déclarations . Exécuter une instruction de code supplémentaire dans le corps après que la valeur du paramètre a été assignée à l'attribut correspondant .
Tous les paramètres ne doivent pas être promus . Vous pouvez mélanger les paramètres de levage ou de non - levage comme attributs , Et il n'est pas nécessaire d'être séquentiel . Les paramètres élevés n'affectent pas les appels de code dans le constructeur .
4. Nouveau match Expression
matchL'expression calcule les branches en fonction de la cohérence des valeurs.matchExpressions etswitchDéclarations similaires, Tous ont un corps d'expression,Peut être comparé à plusieurs options. AvecswitchLa différence est,Il sera évalué comme une expression ternaire. AvecswitchUne autre différence,C'est une comparaison stricte(===)Au lieu de comparer vaguement(==). Match Expression de PHP 8.0.0 Disponible à partir de.
<?php
$food = 'cake';
$return_value = match ($food) {
'apple' => 'This food is an apple',
'bar' => 'This food is a bar',
'cake' => 'This food is a cake',
default => 'This is default'
};
var_dump($return_value);
La routine ci - dessus produit
string(19) "This food is a cake"
4.1 Attention!
️ Pas nécessairement
matchRésultat de l'expression.️
matchExpressionIl fautUtilisez le point - virgule;Fin.
4.2 match Avec switch La différence entre
matchExpressions avecswitchLes déclarations sont similaires,Mais voici les principales différences:
matchComparer les valeurs des branches,Une comparaison stricte a été utilisée (===), Et switch La Déclaration utilise une comparaison lâche.matchL'expression renvoie une valeur.matchLes branches deswitchMême déclaration, Exécuter le prochain case.matchL'expression doit énumérer soigneusement toutes les situations.
4.3 Virgule séparée(Logique OR)
<?php
$result = match ($x) {
// Branche correspondante:
$a, $b, $c => 5,
// équivalent aux trois branches suivantes:
$a => 5,
$b => 5,
$c => 5,
};
4.4 Utiliser match L'expression traite des contrôles de non - conformité
Peut être utilisé
matchL'expression vatrueEn tant qu'expression primaire pour traiter les cas de non - conformité.
Exemple: Pour une plage entière, Utilisez des expressions larges pour faire correspondre les branches
<?php
$age = 23;
$result = match (true) {
$age >= 65 => 'senior',
$age >= 25 => 'adult',
$age >= 18 => 'young adult',
default => 'kid',
};
var_dump($result);
La routine ci - dessus produit
string(11) "young adult"
Exemple: Pour le contenu de la chaîne,Utilisez des expressions larges pour faire correspondre les branches
<?php
$text = 'Bienvenue chez nous';
$result = match (true) {
str_contains($text, 'Welcome') || str_contains($text, 'Hello') => 'en',
str_contains($text, 'Bienvenue') || str_contains($text, 'Bonjour') => 'fr',
// ...
};
var_dump($result);
La routine ci - dessus produit
string(2) "fr"
5. NouveauNullsafe Opérateur(?->)
Depuis PHP 8.0.0 Lève - toi., Les propriétés et méthodes de la classe peuvent être obtenues par “nullsafe” Accès de l'opérateur:
?->. Sauf une différence. ,nullsafe Opérateurs et propriétés originales ci - dessus 、 L'accès aux méthodes est uniforme : Résolution des références d'objets (dereference)PournullNe pas lancer d'exception,C'est le retour.null. Et si ça fait partie d'un appel en chaîne , Les chaînes restantes sautent directement .Résultats de cette opération , Similaire à l'utilisation avant chaque visite is_null() Fonction pour déterminer si la méthode et les attributs existent ,Mais plus concis.
<?php
// Depuis PHP 8.0.0 Disponible à partir de
$result = $repository?->getUser(5)?->name;
// La ligne de code ci - dessus est équivalente au code suivant
if (is_null($repository)) {
$result = null;
} else {
$user = $repository->getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user->name;
}
}
边栏推荐
- [558. Intersection of quadtrees]
- Versatile programmer
- What is the lifecycle of automated testing?
- Thinking about the research links of data governance projects
- 开发人员使用Helix QAC实现静态代码测试合规性的五大原因
- Fan in and fan out mode of asynchronous API design
- 刷题——笔记2
- 数据治理项目调研环节思考
- Sqlserver remote update timeout through linked server
- LeetCode_ 113_ Path sum II
猜你喜欢

KBPC2510W-ASEMI焊机专用整流桥KBPC2510W

SQL中去重的三种方法,还有谁不会?

史上最全CAD快捷键大全汇总

SQL基础(一):安装MySQL以及一些简单操作

The title is too long. Replace it with an ellipsis

手机浏览器扫一扫的花样玩法,识万物还能答疑翻译

以太网开发与测试,这一步你做对了吗 (2)

严格模式下导致mysql5.7插入用户表的方式新建用户失败,那么如何修改严格模式,让他插入成功。将all权限改为select应该怎样改,innodb引擎表页的16KB可以修改嘛?
![[558. Intersection of quadtrees]](/img/b5/ef8ca9c5e249efff0e7ff978b75725.png)
[558. Intersection of quadtrees]

无心剑中译迈克尔《代数的定义》
随机推荐
go+mysql+redis+vue3简单聊室,第2弹:数据库链接和操作
Paul Holland: predicting the trend of the financial market
大楼扔鸡蛋问题的求解
记录一次坑爹内存泄漏排查经历
8 年产品经验,我总结了这些持续高效研发实践经验 · 研发篇
网络爬虫
Flume 数据采集
Li Kou daily question - day 38 -58 Length of the last word
The title is too long. Replace it with an ellipsis
【2023提前批 之 面经】~ 海尔
编译原理——绪论
Count the number of MySQL groups, and then calculate the proportion of each group
[paper reading | deep reading] graph neural networks with local structural patterns
Stochastic Multiple Choice Learning for Training Diverse Deep Ensembles
PendingIntent详解
Maxwell配置案例
Deep learning for Human Strategic Behaviour
为什么大家都热衷于考软考?原因在此
1. Mx6u system migration-3-uboot startup process
进阶过程:程序员做项目的独立性