Ich hatte gestern das Vergnügen ein kleines, aber feines Interview mit dem PHP-Entwickler Vitalij Mik führen zu dürfen. Mich hat es interessiert, wie ein PHP-Entwickler, der nicht aus dem WordPress-Universum stammt, auf die Zukunft von PHP, das Zusammenspiel von WordPress und PHP und zukünftige Fähigkeiten von PHP-Entwicklern blickt.
- Hallo Vitalij stelle dich bitte kurz den Lesern von perun.net vor.
- Hallo Vladimir, vielen Dank, dass ich bei dem Interview dabei sein darf. Also mein Name ist Vitalij Mik und ich arbeite seit 2011 als PHP Entwickler. Vor 2011 habe ich eigentlich eine Ausbildung zum Fachinformatiker gemacht mit der Programmiersprache C++ und wollte eigentlich ein Browsergame entwickeln, weshalb ich dann auch PHP gelernt habe und seitdem ist es mein täglicher Begleiter.
Ich bin sehr aktiv in der Open Source Community schreibe für verschiedene Zeitschriften wie zum Beispiel PHP Magazin, dort waren meine Artikel zum Thema PHP 8 und PHP 8.1 die Titelthemen. Auch für das Magazin T3N habe ich ein Artikel zu PHP 8 verfasst. 2016 schrieb ich ein Artikel zum Thema Clean Code in der Zeitschrift Sitpoint und der Artikel landete im Jetbrains Newsletter.
Seit 2019 führe ich einen Youtube-Kanal rund um das Thema PHP und erstelle Tutorials für PHP-Entwickler. Aktuell arbeite als PHP-Entwickler in einer Shopware-Agentur.
- PHP 8 ist mittlerweile seit einigen Monaten draußen und ein Großteil der bekannten Webhoster bietet es auch seinen Kunden an. Was sind die Neuerungen in PHP 8, die deiner Meinung nach wichtig und notwendig waren?
- PHP 8 war ein riesen Meilenstein für unsere Community und viele Features die dazugekommen sind hätte man schon gerne früher gehabt. Meine persönlichen Favoriten wären zum einen die Union Types. Es kommt doch immer wieder vor, dass man unterschiedliche Typen für einen Rückgabewert oder Parameter angeben möchte neben nullable. So kann man jetzt wunderbar mit einer
pipe (|)
mehrere Typen angeben und kombinieren. Aber auch mixed return type wurde eingeführt.Einerseits kann zwar hier argumentieren, dass es kein Sinn ergibt unterschiedliche Typen zu erwarten oder auszugeben aber andererseits erlaubt diese Kombination eine Abstufung richtung strikter Typisierung. Man kann mit diesen Möglichkeiten sehr einfach von einer schwachen Typisierung auf eine Starke wechseln. Zudem gibt es einen pseudo-type “false” dieses kann man wunderbar da einsetzen, wo man entweder ein Wert oder ein False ausgeben will.
bool | string
würde ja zum Beispiel auchtrue | string
erlauben. Die Static Code Analyzer erwarten dann an solchen Stellen eine Überprüfung auf true und das ist bei vielen Funktionen nicht vorhanden. Wie zum Beispiel beistrpos
.Und apropos Typisierung. Mit PHP 8 werden strings nun typsicher verglichen egal, ob man drei gleicherzeichen nutzt oder zwei.
Des Weiteren finde ich named Arguments super. Man kann jetzt exakt angeben welches Argument, welchen Wert erhalten soll und alle Argumente, die sowieso mit einem Default Wert befüllt werden, kann man dann skippen. Es erleichtert das Lesen und schreiben des Quellcodes, denn du musst nicht mehr in die Funktions oder Methoden Definition schauen, welche null jetzt an der 3en Stelle übergeben wurde und wofür steht das Ganze. Du sagst einfach
variablennamen : wert
.Zusätzlich wurden einige Fehlermeldungen vereinfacht und besser ausgeschrieben so, dass man als Neuling in PHP genau weiß, wo das Problem ist. Vorausgesetzt error_reporting ist aktiviert natürlich.
Es gibt zwar den Just in Time Compiler aber der ist meiner Meinung nach nicht relevant für die normalen Webanwendungen höchstens, wenn man Frameworks wie etwa ReactPHP oder AMPPHP einsetzt die ihre eigene Implementierung der Datenbanken mitbringen. Wenn man die PHP nativen Funktionen und Klassen benutzt hat es nur einen minmalen Einfluss auf die Performance. Allerdings ist das ein wichtiges Feature für die Zukunft und ich möchte es auf keinen Fall kleinreden.
Wie man sehen kann, geht PHP immer mehr in richtung strikter Typisierung da sehr viele Fehler, auf die man täglich stößt, genau aus dieser Welt kommen. Ein GET Parameter ist ein String und damit muss gerechnet werden und dann in die Datenbank umgeandelt werden. Ich persönlich hätte mir noch weitere Tools gewünscht wie zum Beispiel generics. Ein Array mit irgendwelchen Werten ist für mich aktuell auch nicht typisiert genug. Leider hat das Generics Feature nicht in den 8.0 Release geschafft.
Ich denke aber, dass dieses Feature irgendwann doch in PHP eingebaut wird.
- Wenn man zu diversen Webdev-Themen recherchiert, dann stolpert man früher oder später auf (in der Regel) englischsprachige Artikel, die sich mit dem angeblichen Tod von PHP beschäftigen. Mal abgesehen davon, dass die meisten solcher Artikel ohne nennenswerte Substanz sind und an der Grenze zum Click-Baiting stehen, würde mich deine Einschätzung dazu interessieren. Hat PHP ein Imageproblem? Können solche Artikel dazu führen, dass sich Nutzer irgendwann von PHP abwenden oder es einfach weniger Entwickler-Nachwuchs gibt?
- Ach ja, der Tod von PHP. 2009 als ich damit anfing, wurde mir geraten Ruby on Rails zu lernen statt PHP, weil es stirbt. 2013 wurde mir gesagt Python ist eh besser. 2019 wurde mir gesagt PHP stirbt, ich soll mir Go anschauen. Ich denke, dass PHP sicherlich weiterhin noch bestehen wird und noch weiterhin relevant sein wird. Wir haben zu einem sehr viele Systeme, die man nicht einfach so ersetzen kann wie zum Beispiel WordPress, Shopware und weitere. Viele dieser Systeme sind intergraler Bestandteil einiger großen Unternehmen so, dass weiterhin PHP Entwickler gesucht werden. Ich vermute aber auch, dass in einigen Jahren es eventuell weniger Nachwuchs PHP Entwickler geben wird. Natürlich kann niemand die Zukunft voraussagen.
Ich beobachte aber wie einige Dinge verschwinden, die ich damals bei PHP so toll fand und weshalb ich mich in erster Linie für PHP entschieden habe. Zu einem die Leichtigskeit.
Ich habe ja selbst C/C++ und C# während meiner Ausbildung gelernt. Allein damit man nur ein paar sinnlose Programme damit schreibt, musste man schon einigermaßen verstehen, was OOP ist, was ist ein Compiler usw bei PHP Habe ich Xampp installiert und konnte direkt damit loslegen ein Browsergame zu entwickeln und immer wieder F5 drücken und mit
var_dump
nach meinen Problemen suchen und vieles hat php einfach so erlaubt. Aus einem Text ein Array erstellen und den Buchstaben an Position 2 auszulesen? Kein Problem. Eine “20” in die Datenbank zu schreiben, obwohl das Feld eine Zahl ist, kein Problem.Als mir Ruby on Rails empfohlen wurde, war ich total überlastet, man musste mit Gems irgendwas installieren, mit Capistrano Deployen, nach einigen Stunden war ich total Frustriert und habe es aufgegeben. Ich kann mir vorstellen, dass es bei PHP aktuell genauso ist.
Wir nutzen Composer, um unsere Tools zu installieren, wir nutzen Tools um unsere Applikationen zu deployen selbst das beliebte Framework Laravel erinnert einen schon sehr an Ruby on Rails.
PHP entwickelt sich weiter und erfahrene Entwickler wollen gerne ein hohes Niveau haben, weil man es besser für komplexe Services umsetzen kann. Allerdings sind Neulinge dabei oft überfordert.
Ich denke nicht, dass PHP ein Image Problem hat, nur ist PHP “erforscht” und bietet nichts Neues an. Es ist nicht schlecht, andere Sprachen bieten einfach nur spannedere Themen an. Schaut man sich zum Beispiel den Erfolg von Python an in den letzen Jahren so sieht man, dass es oft in Verbindung mit Data Scintist oder AI gebracht wird. Schaut man sich JavaScript und node JS an so wird es oft mit Webapps in Verbindung gebracht.
Niemand möchte eigentlich so wirklich eine Webseite von Grund auf programmieren. In vielen Fällen reichen Homepagebaukästen. Will man ein Online-Shop haben, so installiert man einfach ein Open Source Produkt. Will man ein Blog haben, so installiert man WordPress. PHP ist gut darin eine Webseite zu entwickeln, aber die meisten Dinge die sich auch ein Anfänger vorstellen kann zu entwickeln, gibt es bereits in PHP als Open-Source-Lösung. Wir sind so gut mit unseren Open-Source-Tools, dass wir einfach mal alles abdecken, was das Web betrifft.
Auf der anderen Seite habe ich aber gehört, dass es öfters auf Berufsschulen eingesetzt wird in einer Ausbildung zum Fachinformatiker. Deshalb ist es schwierig einzuschätzen wie die Zukunft aussehen wird, wenn es um neuen Nachwuchs geht.
- WordPress ist momentan das populärste CMS. Es ist auf mehr als 41 % der Websites vorhanden und beherrscht den CMS-Markt mit mehr als 2/3 Verbreitung. Wie wichtig ist WordPress für das Ansehen/Image von PHP? Wäre es für die PHP-Welt ein Verlust, wenn es irgendwann in der Zukunft dazu kommen sollte, auch wenn es sehr unwahrscheinlich ist, dass WordPress sich komplett von PHP lösen sollte?
- Ich glaube, WordPress ist ein zweischneidiges Schwert. Einerseits bietet es Nicht-Programmierern eine einfache Möglichkeit eigene Plugins oder Shortcodes zu programmieren und schon mal die Leute in den Experementiermodus zu führen. Ich kenne einige die PHP nur deshalb gelernt haben, weil die irgendwas in ihren Blog eingebaut haben wollten. Auf der anderen Seite sind wegen der Leichtigkeit viele Dinge erlaubt, die nicht dem normalen PHP Code entsprechen würden und weshalb dann die komplette PHP Community ins schlechte Licht gerückt werden.
Ich denke aber ehrlich gesagt, dass wenn wir kein WordPress hätten, würde ein Großteil der Nutzung der Sprache einbrechen. Ich denke WordPress wäre eine große Bereicherung für PHP, wenn die Interessen der PHP Entwickler sich mit WordPress überschneiden würden. Ich habe mir neulich ein paar Stunden WordPress angeschaut und ich konnte keine Dokumentation zu den üblichen Dingen finden, die man sonst in Frameworks wiederfinden würde. Dependency Injection, Testing, Template Engine, Events. Vielleicht habe ich auch nicht richtig geschaut, aber es kam mir vor als ob WordPress die PHP Entwickler nicht als ihre Zielgruppe ansieht, sondern die nicht Entwickler. Ich bin mir noch dabei die Details genauer anzuschauen und vielleicht ändert sich meine Meinung noch, wenn ich das System besser verstehe.
- Welche wichtigen Neuerungen können wir in den nächsten ein bis drei Jahren von PHP erwarten?
- In PHP werden gerade sehr viele spannende Dinge entwickelt. Zum Beispiel wird es endlich in PHP 8.1 Enums geben und wir können viel Bequemer die Valdierung von Auswahlen programmieren. Denkt mal an den Status des Blog-Beitrags, also Draft, Public usw alle Dropdowns können viel einfacher validiert werden.
Noch striktere Typisierung könnte dazu kommen mit Generics, so kann man auch ein Array oder eine Collection konkreter definieren. Asynchrone Verarbeitung ist auch ein Thema was PHP angehen will, was man mit dem Feature Fibers sieht. Sobald es stärker implementiert ist könnte man PHP noch besser mit NodeJS vergleichen. Ich könnte mir auch vorstellen, dass Functional Programming auch immer mehr in den Focus von PHP rückt. Und nicht zu vergessen, das Foreign Function Interface. Wenn ein Feature oder eine Klasse es in einer anderen Sprache gibt wie zum Beispiel C++, so könnte man die Dateien in PHP einbinden und es dann verwenden.
PHP wird vermutlich in den nächsten Jahren schneller und typsicherer sein und dabei weiterhin stark im Web bleiben.
- Was würdest du jemandem raten, der sich zum jetzigen Zeitpunkt entscheiden sollte mit PHP anzufangen? Welche Vorgehensweisen und welche Quellen würdest du Neueinsteigern und Wiedereinsteigern empfehlen? Welche zusätzlichen Kenntnisse sollte ein zukünftiger PHP-Entwickler noch erwerben um als Freelancer oder als angestellter Entwickler, auf dem Markt bestehen zu können?
- Als Erstes würde ich einem nicht raten ein Buch zu kaufen, also nicht speziell zu PHP 7 oder PHP 8. Bücher, die eine Zahl im Titel haben, haben den Nachteil zu altern. Ich würde vorher einfach das w3-Tutorial für den Anfang durchgehen. Auf w3schools.com gibt es ein Super PHP-Tutorial welches man nach und nach durchgehen kann und es erklärt fast alles, was man am Anfang braucht.
Ich würde empfehlen sich direkt mit einem konkreten Problem zu beschäftigen und versuchen dieses irgendwie zu lösen. Dazu würde ich eine Community suchen, die einem unter die Arme greift, wenn man nicht weiterkommt, man sollte aber nicht alle 5 Minuten eine Frage stellen, sondern wirklich erst Mal recherchieren. Wenn man ein Tutorial oder eine Antwort im Internet findet, dann auf jeden Fall auf das Datum achten. In der Programmierung altern viele Dinge. Auf php.net Funktionen nachschlagen und als Geheimtipp unter den Funktionen ist eine Kommentarsektion, ich habe schon immer wieder dort Antworten gefunden, die genau die Lösung für mein Problem waren.
Wer aber seine PHP-Kenntnisse auffrischen will, dem kann ich phptherightway.com empfehlen. Da ist alles zusammengefasst. Was ist Autoloader, was ist PSR, was ist Composer, worauf achtet man bei Security usw.
Speziell denke ich, dass man in PHP immer weniger wirklich entwickelt. Die Programmiersprache existiert schon einige Jahre und es gibt für jedes Problem eine Lösung. Die Entwickler müssen sich mehr in die Rolle des Software-Architekten bewegen und die Tools verwenden, die es bereits gibt und diese dann entsprechend anpasst. Aus meinem Arbeitsalltag merke ich immer wieder, dass ich mir nicht die Frage stellte, wie löse ich das Problem X, sondern wie verwende ich das Tool und binde es einfach und flexibel in das vorhandene System ein. Dabei spielt Docker eine große Rolle sowie automatisierte Tests, man will ja schließlich dafür sorgen, dass die Implementierung auch funktioniert.
Durch die Schnelllebigkeit von Versionen könnte man auch versuchen seine Plugins mehr Framework-agnostisch zu entwickeln. Wenn man etwas mehr Zeit in eine bessere Architektur steckt, kann man sicherlich auf langer Sicht einfacher die Plugins erweitern und auch mal in anderen Projekten verwenden die eine andere Basis haben. Auch wird VueJS immer wichtiger besonders in Verbindung mit PWA, in einigen Industrien ist es aktuell nicht mehr wegzudenken. Es hilft einem viel, wenn man bereits Erfahrung mit verschiedenen Tools gesammelt hat. Ich würde auch sagen, wenn es die Zeit zulässt gerne nach der Arbeit an Freizeitprojekten arbeiten und Tools kennenlernen.
Ich freue mich riesig auf die neuen Features von PHP 8 und ich würde mich mehr über Einigkeit in der PHP Community wünschen.
Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienstleistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.