PHP 8 a beaucoup de nouvelles fonctionnalités, dans cette liste, nous examinerons les plus remarquables.Avertissement: Le lien vers cet article en anglais était déjà dans le post du dernier condensé PHP. Si vous connaissez suffisamment la langue, il peut être utile de revenir à l'original, il y a beaucoup de notes de bas de page pour d'autres articles en anglais.Temps
use \Support\Attributes\ListensTo;
class ProductSubscriber
{
<<ListensTo(ProductCreated::class)>>
public function onProductCreated(ProductCreated $event) { }
<<ListensTo(ProductDeleted::class)>>
public function onProductDeleted(ProductDeleted $event) { }
}
Au lieu de docblock, des attributs.Oui, je sais, la syntaxe n'est peut-être pas celle que vous vouliez ou espériez. Peut-être préféreriez-vous @, @:, ou docblocks, ou autre chose. Mais il ne sera que ça. La seule chose qui mérite d'être mentionnée à propos de la syntaxe est que toutes les options ont été discutées, et il y a de très bonnes raisons pour lesquelles cette syntaxe a été choisie. Vous pouvez lire un bref résumé de ceci dans le RFC , ou vous pouvez lire toute la discussion sur le RFC dans la liste des composants internes .
Deux
public function foo(Foo|Bar $input): int|float;
public function bar(mixed $input): mixed;
La combinaison de types vous permet de spécifier plusieurs types à la fois. Il existe également un nouveau type mixte qui représente plusieurs types en même temps.
Trois
interface Foo
{
public function bar(): static;
}
Vous pouvez spécifier statique dans le type de retour.
Quatre
[JIT]
opcache.jit=5
Compilateur JIT intégré.Qu'est-ce que JIT?"JIT" signifie "juste à temps" - "au bon moment". Vous savez probablement que PHP est un langage interprété: il n'est pas compilé en tant que programme en C, Java ou Rust. Au lieu de cela, il se traduit par du code machine - quelque chose que le processeur comprend - au moment de l'exécution."JIT" est une méthode qui compile des parties de code au moment de l'exécution afin qu'une version compilée puisse être utilisée à la place.Considérez-le comme une «version mise en cache» de code interprété généré lors de l'exécution.Plus en détail déjà écrit sur Habré
Cinq
$triggerError = fn() => throw new MyError();
$foo = $bar['offset'] ?? throw new OffsetDoesNotExist('offset');
throw peut être utilisé dans les expressions.
Six
try {
} catch (MySpecialException) {
Log::error("Something went wrong");
}
Vous pouvez omettre la variable d'exception si vous n'en avez pas besoin.
Sept
public function(
string $parameterA,
int $parameterB,
Foo $objectfoo,
) {
}
Vous pouvez spécifier une virgule à la fin de la liste des paramètres.
Huit
str_contains('string with lots of words', 'words');
str_starts_with('haystack', 'hay');
str_ends_with('haystack', 'stack');
Nouvelles fonctions de chaîne. Je pense que leur nom parle de lui-même.Ne nous leurrons pas: 8 blocs de code ne suffisent pas pour résumer toutes les nouveautés de PHP 8. Alors, ajoutons-en quelques-uns de plus.
Neuf
function bar(Stringable $stringable) { }
Une nouvelle interface Stringable qui est automatiquement ajoutée aux classes qui implémentent la méthode __toString ().
Dix
$object::class
Appeler :: class directement depuis l'objet.