© Andrey Suslov/Shutterstock.com
Vor- und Nachteile des Foreign Function Interface

PHP FFI: Anwendung und Funktionsweise


PHP 7.4 brachte eine ganze Reihe neuer Funktionen mit sich. Eine davon ist die Erweiterung Foreign Function Interface, die direkt im Core implementiert wurde. In diesem Artikel werden wir herausfinden, wie fast jede C Library direkt aus PHP heraus aufgerufen werden kann, wie man gängige Pitfalls überwindet, wann man diesen Ansatz verwenden sollte und vor allem, wann nicht.

Betrachtet man sich die Release Notes von PHP 7.4 genauer, so fällt auf, dass das Update eine ganze Reihe neuer Funktionen enthält. Einige wurden schon lange erwartet, wie etwa die Typed Properties, anderen waren eher überraschend. Unabhängig davon ist das FFI (Foreign Function Interface) wohl das am wenigsten selbsterklärende.

Was bedeutet FFI? Nach Wikipedia kann es wie folgt charakterisiert werden: „Ein Mechanismus, mit dem ein in einer Programmiersprache geschriebenes Programm Routinen aufrufen oder in einer anderen Programmiersprache geschriebene Dienste in Anspruch nehmen kann“ [1]. Aber das ist lediglich eine Buchdefinition, die nichts darüber aussagt, welche Probleme in der realen Welt gelöst werden können. Damit bleibt eine weitere Frage offen: Welche Probleme löst FFI?

FFI in PHP

FFI kann dabei helfen, einen Code wiederzuverwenden, der bereits in einer völlig anderen Programmiersprache geschrieben wurde. Als Beispiel sei ein Konnektor zu einer Datenbank genannt, die noch nicht nach PHP portiert wurde. Eine andere mögliche Verwendung ist die Beschleunigung einiger Teile des Codes. In diesem Fall kann ein Algorithmus in der Programmiersprache geschrieben werden, der eine bessere Leistung für den Gebrauch bietet; zum Beispiel zur Durchführung einer komplizierteren wissenschaftlichen Berechnung. Schließlich können auch Dinge realisiert werden, die in der Sprache nicht unterstützt werden – etwa das Kommunizieren mit einer Hardware. PHP-Programmierer stellen sich nun zu Recht die Frage, ob all das nicht schon mit bereits vorhandenen Erweiterungen getan werden kann. Die Antwort ist ja – wir können all die genannten Aufgaben mit Hilfe von PHP-Erweiterungen erledigen. Aber FFI hat dennoch seine Vorzüge, denn es verspricht eine einfachere Nutzung, Wartung und Deployment und eine bessere Portabilität zwischen den PHP-Versionen. Der Hauptgrund dafür ist, dass man alles in einfachem PHP realisieren kann, sodass es nicht notwendig ist, ein Compilation Toolkit einzurichten oder die Deployment-Verfahren zu ändern. Was die Portabilität betrifft, so kann das API der PHP-Erweiterung je nach Ver...

Exklusives Abo-Special

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