Php 8 - ce qu'il faut retenir
Les fonctions et ses arguments
Les arguments nommés permettent de passer des arguments à une fonction en se basant sur le nom du paramètre, plutôt que sur sa position. Cela rend la signification de l'argument auto-documentée, rend les arguments indépendants de l'ordre, et permet de sauter les valeurs par défaut de manière arbitraire.
<?php
function foo(
?string $arg_1 = "bar_1",
?string $arg_2 = "bar_2",
?string $arg_3 = "bar_3") {
/** ... **/
}
foo("input_standard", arg_3: "input_specified");
Chaîne d'éléments nullables
Le court-circuitage consiste à sauter l'évaluation d'une expression en fonction d'une condition donnée. Les opérateurs && et || en sont deux exemples courants. L'opérateur nullsafe ?-> peut implémenter le court-circuitage de trois manières différentes. Nous allons examiner le même extrait de code pour chaque option.
null?->foo(bar())->baz();
Cette absence totale de court-circuit ne se retrouve actuellement que dans des Hacks. La fonction bar() et la méthode baz() sont toutes deux appelées. baz() provoquera une erreur "Call to a member function on null". L'évaluation des arguments des méthodes en fait la plus surprenante des trois options. C'était la principale critique du dernier RFC.
C'est ce qui serait normalement considéré comme une absence de court-circuit. La fonction bar() n'est pas appelée, la méthode baz() l'est. baz() provoquera une erreur "Call to a member function on null".
Nous appellerons cela un court-circuit complet. Ni la fonction bar() ni la méthode baz() ne sont appelées. Il n'y aura pas d'erreur "Call to a member function on null".
Construction de class simplifié
Lorsqu'un paramètre de méthode est préfixé par l'un des mots-clés de visibilité public, protected ou private, il est considéré comme "promu". Pour chaque paramètre promu, une propriété du même nom sera ajoutée, et une affectation de transfert à cette propriété sera incluse dans le corps du constructeur.
<?php
Class UnComplexify {
public function __construct() {
public $attribut_1 = "value_1";
public $attribut_2 = "value_2";
}
/** ... **/
}
$unComplexe = new UnComplexify();
echo $unComplexe->attribut_1; // value_1
echo $unComplexe->attribut_2; // value_2
La sensibilité du typage
Une méthode peut prendre plusieurs types de paramètre, il est désormais possible de l'exprimer lors de l'appel. Les types d'union sont spécifiés en utilisant la syntaxe T1|T2|... et peuvent être utilisés dans toutes les positions où les types sont actuellement acceptés.
<?php
function types ( int|float $number ) : int|bool { /** ... **/ }
De nouvelles fonctions native
str_contains()
str_contains vérifie si une chaîne est contenue dans une autre chaîne et renvoie une valeur booléenne (vrai/faux) si la chaîne a été trouvée ou non.
str_contains ( string $haystack , string $needle ) : bool
La façon typique de vérifier si une chaîne de caractères est contenue dans une autre est généralement faite en utilisant les fonctions strpos
ou strstr
. Parce que cette fonction est un cas d'utilisation si commun dans presque tous les projets, elle devrait mériter sa propre fonction dédiée : str_contains
.
str_starts_with()
& str_ends_with()
str_starts_with vérifie si une chaîne commence par une autre chaîne et renvoie une valeur booléenne (vrai/faux) si c'est le cas.
str_starts_with ( string $haystack , string $needle ) : bool
str_ends_with vérifie si une chaîne se termine par une autre chaîne et renvoie une valeur booléenne (vrai/faux) si c'est le cas.
str_ends_with ( string $haystack , string $needle ) : bool
En général, cette fonctionnalité est réalisée en utilisant des fonctions de chaîne existantes telles que substr
, strpos
/strrpos
, strncmp
, ou substr_compare
(souvent combinée avec strlen
).
La fonctionnalité str_starts_with
et str_ends_with
est si souvent utilisée que de nombreux frameworks PHP majeurs la supportent, y compris Symfony, Laravel, Yii, FuelPHP, et Phalcon 1).
Vérifier le début et la fin des chaînes de caractères est une tâche très courante qui devrait être facile. L'accomplissement de cette tâche n'est pas facile aujourd'hui et c'est pourquoi de nombreux frameworks ont choisi de l'inclure. C'est également la raison pour laquelle d'autres langages de programmation de haut niveau - aussi divers que JavaScript, Java, Haskell et Matlab - ont implémenté cette fonctionnalité. Vérifier le début et la fin d'une chaîne de caractères ne devrait pas être une tâche qui nécessite de faire appel à un framework PHP ou de développer une fonction potentiellement sous-optimale (ou pire, boguée) en userland.

MarquandT
Ethical Hacker ~ Web Developper ~ File Hosting Provider ~ Crypto Enthusiast ~ Automation Expert Bitcoin donation: 32Uu4NKGnxSPC7UukYXVyRHwbppbQpKVki