© galacticus/Shutterstock.com, HappyPictures/Shutterstock.com
PHP 8.0: mehr als nur ein JIT-Compiler

Sprung in die Zukunft


Mit dem Release von PHP 7.0 im Jahr 2015 wurde eine neue Ära eingeleitet. Doch jetzt steht PHP 8.0 mit vielen spannenden neuen Features vor der Tür. In diesem Artikel möchte ich die neuen Möglichkeiten vorstellen und genauer erläutern. Die Features sind schon im offiziellen PHP Wiki [1] definiert. Das heißt, dass einige der Features aus diesem Artikel eventuell schon umgesetzt wurden und andere kurz vor der Umsetzung stehen.

Den Artikel möchte ich mit bereits umgesetzten Features beginnen. Diese sind im Wiki bereits als „implemented“ [2] definiert. Es kann also sein, dass zum Zeitpunkt des Erscheinens des vorliegenden PHP Magazins bereits weitere Features implementiert wurden. Daher bitte ich vorab um Verständnis, dass eventuell wichtige Feature hier nicht beschrieben werden.

str_starts_with() und str_ends_with()

Die ersten Funktionen, die ich auf jeden Fall in der neuen PHP-Version implementieren werde, sind str_starts_with() und str_ends_with() [3]. Sie werden sehr oft in vielen Frameworks abgefragt. Die aktuellen Lösungen wie etwa

substr($haystack,0,strlen($needle)) === $needle; // oder strpos($haystack,$needle) === 0

sind nicht effizient, wenn es um CPU oder Arbeitsspeicherverbrauch geht. Die strncmp()-Funktionen sind zwar besser, aber sie verlangen immer die $needle-Länge als Parameter. Dadurch müsste man entweder mit strlen oder mb_strlen den gesuchten String noch einmal analysieren. Bei den Vergleichen, ob der String mit einem String endet, muss man zusätzlich in einigen Fällen den String umkehren damit man den gesuchten Wert ans Ende bringt oder man arbeitet mit sbstr_compare, was auch die Länge als Parameter benötigt. Außerdem werden in einigen Fällen noch if-Statements verlangt; wenn zum Beispiel ein $needle leer oder länger ist als ein $haystack, kann es manchmal eine Warnung geben.

Wenn Frameworks diese Funktionen implementieren, erzeugen sie aber dadurch natürlich einen Backwards Compatibility Break, weil die Funktion erst ab PHP 8 zur Verfügung steht. Mit einem Wrapper ließe sich das aber relativ einfach lösen.

Konstante class für das stdClass

Ein weiteres Feature, auf das ich mich freue, ist die class-Konstante in einem Objekt [4]. In allen Klassen können wir aktuell auf die Konstante class zugreifen, um den Namen sowie Namespace der Klasse zu ermitteln. Es existiert aber die Sonderklasse stdClass. Diese wird zum Beispiel aus einem JSON angelegt oder wenn wir einen Datensatz aus der Datenbank auslesen, u. a. mit PDO::FETCH_OBJ. Die generis...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang