PHP 8 in acht Codeteilen

PHP 8 hat viele neue Funktionen, in dieser Liste werden wir uns die herausragendsten ansehen.

Haftungsausschluss: Der Link zu diesem Artikel in englischer Sprache befand sich bereits im Beitrag des letzten PHP-Digests. Wenn Sie die Sprache ausreichend kennen, kann es sich lohnen, zum Original zu gehen. Es gibt viele Fußnoten zu anderen englischsprachigen Artikeln.

Zeit


use \Support\Attributes\ListensTo;

class ProductSubscriber
{
    <<ListensTo(ProductCreated::class)>>
    public function onProductCreated(ProductCreated $event) { /* … */ }

    <<ListensTo(ProductDeleted::class)>>
    public function onProductDeleted(ProductDeleted $event) { /* … */ }
}

Anstelle von docblock Attribute.

Ja, ich weiß, die Syntax entspricht möglicherweise nicht Ihren Wünschen oder Hoffnungen. Vielleicht bevorzugen Sie @, @: oder docblocks oder etwas anderes. Aber er wird genau das sein. Das einzige, was an der Syntax erwähnenswert ist, ist, dass alle Optionen besprochen wurden, und es gibt sehr gute Gründe, warum diese Syntax gewählt wurde. Sie können eine kurze Zusammenfassung davon im RFC lesen oder die gesamte Diskussion über RFC in der Liste der internen Komponenten lesen .



Zwei


public function foo(Foo|Bar $input): int|float;

public function bar(mixed $input): mixed;

Durch das Kombinieren von Typen können Sie mehrere Typen gleichzeitig angeben. Es gibt auch einen neuen gemischten Typ, der mehrere Typen gleichzeitig darstellt.



Drei


interface Foo
{
    public function bar(): static;
}

Sie können statisch im Rückgabetyp angeben.



Vier


[JIT]
opcache.jit=5

Eingebauter JIT-Compiler.

Was ist JIT?

"JIT" steht für "just in time" - "zur richtigen Zeit". Sie wissen wahrscheinlich, dass PHP eine interpretierte Sprache ist: Es wird nicht als Programm in C, Java oder Rust kompiliert. Stattdessen wird es zur Laufzeit in Maschinencode übersetzt - etwas, das der Prozessor versteht.

"JIT" ist eine Methode, die Teile des Codes zur Laufzeit kompiliert, sodass stattdessen eine kompilierte Version verwendet werden kann.

Stellen Sie sich das als „zwischengespeicherte Version“ des zur Laufzeit generierten interpretierten Codes vor.

Ausführlicher bereits über Habré geschrieben



Fünf


$triggerError = fn() => throw new MyError();

$foo = $bar['offset'] ?? throw new OffsetDoesNotExist('offset');

throw kann in Ausdrücken verwendet werden.



Sechs


try {
    // Something goes wrong
} catch (MySpecialException) {
    Log::error("Something went wrong");
}

Sie können die Ausnahmevariable weglassen, wenn Sie sie nicht benötigen.



Sieben


public function(
    string $parameterA,
    int $parameterB,
    Foo $objectfoo,
) {
    // …
}

Sie können am Ende der Parameterliste ein Komma angeben.



Acht


str_contains('string with lots of words', 'words');

str_starts_with('haystack', 'hay');

str_ends_with('haystack', 'stack');

Neue String-Funktionen. Ich denke, ihr Name spricht für sich.
Machen wir uns nichts vor: 8 Codeblöcke reichen nicht aus, um all die großartigen neuen Dinge in PHP 8 zusammenzufassen. Fügen wir also noch ein paar hinzu.



Neun


function bar(Stringable $stringable) { /* … */ }

Eine neue Stringable-Schnittstelle, die automatisch Klassen hinzugefügt wird, die die Methode __toString () implementieren.



Zehn


$object::class

Aufruf der Klasse :: direkt vom Objekt aus.



All Articles