KONZEPT
PART 1: Das Ganze sehen.
PHP (Hypertext Preprocessor) ist eine serverseitige Skriptsprache, die speziell für die Webentwicklung entwickelt wurde. Sie ermöglicht Entwicklern, dynamische Webseiten zu erstellen, indem sie HTML-Code mit PHP-Code kombiniert.
PHP wird in verschiedenen Umgebungen verwendet, darunter Apache, Nginx und Kombinationen wie Nginx/Apache. Diese Webserver bieten die notwendige Unterstützung, um PHP-Skripte auszuführen und dynamische Inhalte zu liefern.
PHP-Module können einfach verpackt und verteilt werden. Ein gängiger Ansatz ist die Verwendung von ZIP-Archiven, um mehrere Dateien und Verzeichnisse in einem einzigen Paket zu bündeln. Die Klasse ZipArchive [1] bietet dafür umfangreiche Funktionen.
PHP 7 und PHP 8.x unterscheiden sich in mehreren wichtigen Punkten. PHP 8.x führt einen Just-in-Time (JIT) Compiler ein, der die Ausführungsgeschwindigkeit verbessert. Zudem gibt es strengere Typprüfungen und eine verbesserte Syntax für die Deklaration von Eigenschaften. Im Vergleich zu JAVA, C# und JavaScript bietet PHP eine einfachere Syntax und ist speziell für die Webentwicklung optimiert.
Zum Editieren von PHP-Code gibt es verschiedene Entwicklungsumgebungen (IDEs) wie NetBeans, PHPStorm und Visual Studio Code. Diese Tools bieten Funktionen wie Syntaxhervorhebung, Codevervollständigung und Debugging, die die Entwicklung effizienter und fehlerfreier machen.
Lerne PHP und entdecke die Möglichkeiten, die dir diese vielseitige Sprache bietet. Egal ob du bereits Erfahrung mit C# [2] hast oder neu in der Programmierung bist, PHP wird dir helfen, deine Projekte auf das nächste Level zu heben.
Links
PART 2: Links
PHP wurde Ende der 1990er Jahre von ursprünglich einem einzigen Entwickler, Rasmus Lerdorf, einem Dänen geschaffen. In früheren Versionen von Wikipedia wurde noch erwähnt, dass er PHP eigentlich für die Auswertung von Zugriffen auf seine Webseite im Zuge eines Bewerbungsverfahrens nutzen wollte und hierbei mit C++ und PERL zu dieser Zeit unzufrieden war. Die Abkürzung wurde dahingehend einst als Personal Homepage Programming ausgelegt, aber die heutige Darstellung ist eine andere.
Während es mit JAVA, C# .NET Core und auch NodeJS üblich ist, Non-Blocking-I/O Webservices basierend auf Threads zu schreiben, funktioniert PHP als HTML Präprozessor: PHP Code innerhalb von HTML Code wird hierbei verarbeitet und das Ergebnis wieder im HTML Code eingefügt.
Anschaulich: Wenn 100 Nutzer auf die selbe Adresse einer Webseite zugreifen wurde ursprünglich für jeden Besucher über Apache als HTTP Server der PHP Code geladen und unabhängig von anderen Zugriffen verarbeitet und eine Antwort geschickt. Im Falle von JAVA- oder auch NodeJS-basierten Webservices wird das Programm nur einmal beim ersten Zuggriff gestartet und ist in der Lage, alle 100 Nutzer in Echtzeit im Arbeitsspeicher mit dem selben Programm zu verarbeiten.
Nicht einfach
Typisierung
public add(int $a,float $b):float {}
PHP unterstützt seit PHP 8.x eine strikte Typisierung von Methoden-Parametern und Methoden-Return-Werten. Das schließt übrigens auch Zugriffsmodifikatoren mit ein.
Wer also bislang glaubte, dass PHP einfacher sei als JAVA, C# oder C++ weil es keine Typisierung kennt: Die Typisierung in PHP ist längst da. Sie ist zwar optional, aus ernstzunehmenden Projekten wie z. B. TYPO3 aber nicht mehr wegzudenken.
Pseudo-Pointer
$adresse0123=new Object();
$nummer=123;
$objekt=$${'adresse'.$nummer};
PHP ermöglicht es von Beginn an, Variablen über eine Konstruktion eines Bezeichners zu referenzieren.
Copy-by-Reference
function a(&$b){$b=12;}
$b=10; a($b); echo $b; //12
PHP unterstützt im Gegensatz zu JavaScript die Möglichkeit, auch string-, int-, double- oder boolean-Werte als Referenzen zu übergeben.
Automatische Typkonvertierung
Das bei Einsteigern beliebteste Feature der automatischen Typkonvertierung ist genau das, was man in realen Projekten konsequent zuvermeiden versucht.
Aus $a="T"; $b=5;
mit $t=$a+$b; wird
in PHP mit print $t; // 5
dann 5
PHP hat Namespaces
Wer bislang meinte, dass PHP so etwas wie import (JAVA)
oder using (C#) Anweisungen nicht kennt: Falsch. Alle Funktionen
und Klassen aus PHP selbst haben seit PHP 8.x den Namespace
\. Der PSR-4
Standard in PHP entspricht für Namespaces entspricht dem
Ansatz von JAVA Packages.
$stern = new Stern(); // alt
$stern = new \Stern(); // neu
$stern = new \example\Stern(); // besser
Variablen mit Leerzeichen?
Wer aus JavaScript let a=5;
und a["T"]="Text"; schon kennt
sollte wissen, dass so etwas sinngemäß --- wenn auch mit anderer Syntax ---
in PHP dazuführt, dass Konstanten und Variablen einen Namen wie
"https://example.com" ebenso haben könnten wie sogar Variablennamen
mit Leerzeichen wie "Hallo Welt!".
Closures und Lambda-Expressions
Wer in JavaScript schon die Closures nie richtig verstanden hat: Auch PHP unterstützt Closures. Das gilt auch für Lambda Expressions: Die kann PHP auch.
PHP verändert sich stetig
Merken Sie sich eines gleich von Beginn an:
Die Programmiersprache PHP verändert sich seit 20 Jahren ständig und stetig. Viele Kritikpunkte von JAVA- und C#- oder C++ Entwicklern an PHP waren durchaus begründet. PHP erlaubt immer einen schnellen Einstieg, und diesen Zeitvorteil verliert man aber in der laufenden Entwicklung weil altes PHP bzw. PHP-Grundlagen nicht für wachsende Projekte ausgelegt war.
Wenn wir bei SNEWMEDIA von "PHP Grundlagen" sprechen dann geht es im Kern darum, dass unsere Kunden PHP verstehen lernen und nicht nur in der Lage sind, irgendwelche Variablen anzulegen und in HTML auszugeben.
Automatische Typkonvertierung
Wer von JAVA, C# oder auch TypeScript kommt kann bei PHP an der automatisierten Typkonvertierung verzweifeln. Diese automatisierte Typkonvertierung von PHP ist eine der größten Fehlerquellen in Programmcode und zudem darüber hinaus immer wieder nur schwer zu lokalisieren.
// Einsteiger früher
$zahl = 1; $text = "1";
$ergebnis_1 = $zahl + $text;
$ergebnis_2 = $zahl . $text;
Erfahrene PHP Entwickler befassen sich immer wieder mit nachträglichen Typenprüfungen im Quellcode, um sicherstellen zu können, dass bestimmte Werte tatsächlich bestimmte Typen haben. Es versteht sich von selbst, dass Einsteiger, die nie ernsthaft darüber nachgedacht haben, an so etwas nicht denken.
Das ist immer wieder ein Aspekt der die Zusammenarbeit bei PHP unter Entwicklern erschwert.
Optionale Typisierung
Ab PHP 8.x ist es in PHP im Zusammenhang mit objektorienter Programmierung längst möglich, auch in PHP Eigenschaften und Methoden in Klassen konsequent zu typisieren. PHP übernimmt hierbei nicht nur eine Typenprüfung zur Laufzeit: Auch Entwicklungsumgebungen sind an diesem Punkt in der Lage, die Datentypen sowie auch die zugehörigen Codehints zu liefern.
// Einsteiger heute
class Berechnung {
public int $zahl = 1;
public string $text = 1;
public string ergebnis_1;
public int ergebnis_2;
public rechnen_int():int {
$this->ergebnis_1 =
$this->zahl + (int) $this->text;
return $this->ergebnis_1;
}
public verketten_text():string {
$this->ergebnis_2 =
(string) $this->zahl . $this->text;
return $this->ergebnis_2;
}
}
$e_1 = (new Berechnung())
->rechnen_int();
$e_2 = (new Berechnung())
->verketten_text();
Namespaces und PSR-4
Es gibt schon lange den PSR-4 Standard in PHP mit Namespaces. Das Problem ist nur: Einsteiger lernen es nicht. Unternehmen kennen es kaum.
Man muss einfach eines auch bei PHP verstehen lernen: Die Zeiten, in denen PHP nur für kleine Homepages eingesetzt wurde, sind seit Jahrzehnten vorbei. Überall, wo Software komplexer wird und im gerade im Open-Source-Bereich viele Module anderer Entwickler eingesetzt werden, ist es unvermeidbar, dass andere Entwickler den Klassen die gleichen Klassennamen geben.
Der PSR-4 Standard gibt bereits seit Langem vor, wie man Namespaces und Klassen benennt und auch wie man die zugehörigen Ordner und Dateien im Dateisystem benennt.
// Früher
$stern = new Stern(); // alt
// Heute
$stern = new \muster\Stern();
$stern = new \astronomie\Stern();
$stern = new \bewertungen\Stern();
PART 3: Fußnoten
Quellenangaben
- [1]↑ ZipArchive: Die Klasse ZipArchive in PHP bietet Methoden zum Erstellen, Bearbeiten und Extrahieren von ZIP-Archiven.
- [2]↑ : C# ist eine von Microsoft entwickelte Programmiersprache, die Teil des .NET-Frameworks ist. Sie ist objektorientiert und wird häufig für die Entwicklung von Desktop-, Web- und mobilen Anwendungen verwendet.
UIO3 Es ist einfacher als Du denkst.
Stelle noch heute Deine Anfrage.
