PHP Einstieg
Datum: Oktober 2021
Lesedauer: 8 Minuten
Nachdem ich mich nun exakt seit einem Monat mit der Sprache auseinandergesetzt habe, zeige ich auf, was PHP ist.
Geschichte
PHP (Hypertext Preprocessor) ist eine Skriptsprache, welche in der Webentwicklung eingesetzt wird. Die Syntax ist an C und Perl angelehnt. Rasmus Lerdorf hat diese im Jahre 1994 entwickelt, um die Erstellung von dynamische Webapplikationen zu ermöglichen. Letzten Monat hat die PHP Group die Version 7.4.24 der Software released.
Skriptsprache: Eine Skriptsprache ist eine Programmiersprache, welche nicht kompiliert, sondern bei Laufzeit interpretiert wird.
Rasmus Lerdorf: Der dÀnisch-kanadische Entwickler arbeitete bei IBM, Linuxcare, Yahoo und WePay. Seit 2012 arbeitet er bei Etsy, einer E-Commerce-Website. Zudem ist er ein Open-Source-Aktivist. Er entwickelte die ersten zwei Versionen von PHP.
Verwendung
PHP eignet sich ideal, um interaktive Webseiten zu realisieren. Die serverseitige Sprache kann man leicht ins HTML einbinden, um so die Webapplikation mit FunktionalitÀten auszustatten. Zu den FunktionalitÀten zÀhlen:
- Darstellung von dynamischem Inhalt
- Einfache Auswertung von Formularen
- Datenbank Anbindungen (MySQL, PostgreSQL, Oracle, Sybase, Informix und Microsoft SQL Server)
- Session Tracking
Dies ermöglicht die Umsetzung von:
- E-Commerce-Systeme
- Chats
- Foren
- ...
Vorteile
Zu den Vorteilen von PHP zÀhlen:
- Einfach zu lernen und implementieren
- Gratis
- Open Source
- PlattformĂŒbergreifende KompatibilitĂ€t (Windows, Linux, UNIX und macOS)
- Grosse Community (Es gibt viele Entwickler und viel Wissen)
Verbreitung
PHP wird laut W3Techs auf 78.7% aller Webseiten verwendet. Dies liegt auch daran, dass die Sprache von Content Management Systems, wie z.B. Wordpress, verwendet wird.
Projekte
Es ist nun klar, weshalb PHP verwendet wird. Doch bei welchen bekannten Projekten werden die Vorteile von PHP ausgenutzt?
Die Facebook Plattform wurde mit PHP entwickelt. Genau genommen hat die Firma eine neue, auf PHP basierende, Sprache entwickelt (Hack). Diese erlaubt static und dynamic Type-Checking.
Static: Die Typen der Variablen sind beim Kompilieren schon bekannt.
Dynamic: Die Typen der Variablen werden erst bei Laufzeit erkannt.
Yahoo!
Auch die Suchmaschine Yahoo, die mehr als 7 Milliarden Aufrufe pro Monat generiert, verlÀsst sich auf PHP. Gerade bei komplexen Applikationen stellt sich also PHP als zuverlÀssig heraus.
WordPress
Das bekannteste Content Management System wurde ebenfalls mit PHP geschrieben.
Beliebtheit
Trotz den vielen Vorteilen und den einflussreichen Projekten eilt PHP kein hervorragender Ruf voraus. Die Programmiersprache wird als unsicher angesehen.
Dies liegt daran, dass fast jeder, in nur kurzer Zeit, eine PHP Applikation erstellen kann. Man braucht dazu nur sehr wenige Kenntnisse. Der Nachteil dabei ist, dass so auch schlechter Code entstehen kann, da die Sprache wenige EinschrÀnkungen hat. Dadurch können Sicherheitsprobleme aufkommen.a Diese Gefahren können aber abgewendet werden. Schreibt man also einen guten Code, so ist eine PHP Seite sicher.
Probleme und ihre Vorbeugungen:
Inhalt momentan nicht verfĂŒgbar.
Setup
m PHP zu verwenden, muss PHP installiert sein oder von einem Webserver zu VerfĂŒgung gestellt werden.
Ich verwende MAMP (opens in a new tab).
Nach der Installation kann man die PHP Dateien im htdocs
Ordner ablegen. So kann man die Webseite ĂŒber den localhost
erreichen.
Syntax
Hello World!
Die Syntax kann sowohl im Browser als auch in der Konsole ausgefĂŒhrt werden.
Konsole
<?php
echo "Hello World!";
?>
php hello.php
Browser
<html>
<head>
<title>PHP</title>
</head>
<body>
<?php
echo "Hello World!";
?>
</body>
</html>
Einbetten
Es gibt zwei Möglichkeiten, um PHP einzubetten. Normalerweise verwendet man die PHP ErgÀnzung folgendermassen:
<?php
foreach ($arr as &$value) {
echo "<p>" . $value . "<p>";
}
?>
Manchmal ist es aber sinnvoll, nicht den ganzen PHP Block einzubinden. Deshalb kann man vom short echo tag
gebrauch machen. Hierbei handelt es sich um eine verkĂŒrzte Schreibweise:
<?php foreach ($arr as $value): ?>
<p><?= $value; ?></p>
<?php endforeach; ?>
Variablendeklaration
PHP erlaubt folgende Datentypen:
- String
- Integer
- Float
- Boolean
- Array
- Object
- Null
- Resource
Einer Variable kann aber kein Datentyp explizit zugeteilt werden.
$name = "Kay";
echo $name;
Methoden
Funktionen werden mit dem Keyword function
erstellt.
function volumen(int $laenge, int $breite=1, int $hoehe=1): float {
return $lagenge * $breite * $hoehe;
}
Argumente
Es gibt mehrere Arten, um die Argumente einer Funktion zu definieren.
Default
Wird beim Funktionsaufruf kein Wert mitgegeben, so wird die angegebene Zahl verwendet.
function testFunc(int $num = 5) {};
Nullable
Weist man dem Methodenparameter null
zu. So muss beim Aufruf der Methode kein Attribut mitgegeben werden.
function testFunc(int $num = null) {};
Recommended
Mit einem Fragezeichen kann man ein Wert empfehlen. Jedoch muss auch hier kein Attribut mitgegeben werden.
function testFunc(int ?$num) {};
RĂŒckgabetypen
Bei Methoden kann der Typ des RĂŒckgabewertes definiert werden.
function testFunc(): int {};
GET & POST
Es gibt zwei Arten, um vom Client Daten zum Webserver zu senden.
Thema | $_GET | $_POST |
---|---|---|
Beschreibung | Die Methode sendet die Informationen angehĂ€ngt an die Seitenanfrage. Beispiel: http://get.com/index.htm?name=wild&lastName=kay . Um diese zu verschlĂŒsseln, mĂŒsste man den Query-String mit der encrypt() Methode verschlĂŒsseln. | Bei dieser Methode werden die Daten via HTTP Header gesendet. Sie sind nicht in der URL sichtbar. |
Maximale Datenmenge | 1024 Zeichen | Keine maximale Begrenzung (abhÀngig von Server und Client) |
Sicherheit | VertrauenswĂŒrdige Daten dĂŒrfen nicht mitgeschickt werden. Die Sicherheit hĂ€ngt vom HTTP-Protokoll ab. Mit HTTPS sind die Informationen sicher. | Die Sicherheit hĂ€ngt ebenfalls vom HTTP-Protokoll ab. Mit HTTPS sind die Informationen sicher. |
Beispiel | get.php Beispiel (siehe Code unten) | post.php Beispiel (siehe Code unten) |
<?php
if( $_GET["name"] || $_GET["age"] ) {
echo "Welcome ". $_GET['name']. "<br />";
echo "You are ". $_GET['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "GET">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
<?php
if( $_POST["name"] || $_POST["age"] ) {
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<html>
<body>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>
</body>
</html>
$_REQUEST
Die $_REQUEST
Variable enthÀlt GET
, POST
und Cookie Daten. Sie kann also genutzt werden, um das Resultat beider Methoden zu erhalten.
MySQL
Wie schon erwÀhnt, ermöglicht PHP ein enges Zusammenspiel mit Datenbanken.
DB verbinden
Eine Zeile reicht, um sich mit der DB zu verbinden.
$mysqli = new mysqli("url.com", "username", "password", "database");
Danach kann man die Daten bearbeiten, löschen, hinzufĂŒgen und holen.
Daten hinzufĂŒgen
$sql = "
INSERT INTO sneaker (name, brands, model, colour, quantity, size, price, retail, releaseDate, artists,
designers, athletes, img) VALUES (
'Jordan 1', 'Nike', 'Jordan', 'White/Red/Black', NULL, '11', '80', '180', '2021-08-02', NULL, NULL, 'Michael Jordan', 'imgs/jordan-one.png', NULL);
";
$this->mysqli->query($sql)
Daten laden
$response = $this->mysqli->query("SELECT * FROM sneaker");
while ($row = $response->fetch_assoc()) {
echo $row["name"] "<br>";
}
DB Verbindung schliessen
$this->mysqli->close();
OOP
PHP ermöglicht auch eine Objektorientierte Programmierung.
Klasse definieren
Eine Klasse wird wie folgt definiert:
<?php
class Fahrzeug {}
?>
Variablen & Methoden
<?php
class Fahrzeug {
/* Eigenschaft */
private $geschwindigkeit = 0;
/* Methode */
function ausgabe() {
echo "Geschwindigkeit: $this->geschwindigkeit<br>";
}
}
?>
Variablen und Methoden können verschiedene Sichtbarkeiten haben.
Sichtbarkeit | private | protected | public |
---|---|---|---|
Erreichbarkeit | Nur innerhalb der Klassendefinition | Nur innerhalb der Klasse erreichbar, in der sie erzeugt werden, und in davon abgeleiteten Klassen | Von ĂŒberall erreichbar |
Instanziierung
Die Syntax, um Objekte zu instanziieren, sieht wie folgt aus.
$vespa = new Fahrzeug();
$vespa->ausgabe();
This
Um auf eine Variable der eigenen Klasse zuzugreifen, kann man this
verwenden.
$this->geschwindigkeit = $ge;
Konstruktor & Dekonstruktor
Der Name des Konstruktors ist nicht derselbe wie der Klassenname. In PHP sieht er so aus.
function __construct($bz, $ge, $fa) {
$this->bezeichnung = $bz;
$this->geschwindigkeit = $ge;
}
$tesla->__construct("Tesla", 10);
Beim Zerstören eines Objektes wird der Dekonstruktor ausgefĂŒhrt.
function __destruct() {
echo "Destruktor<br>";
}
Kopie & Referenz
Objekte können verschieden kopiert werden. Dies wird hier erlÀutert.
Referenz
Die Namen der Objekte, mit welchen man auf sie zugreifen kann, stellen nur eine Referenz dar.
Die Zuweisung eines Objekts zu einem anderen Namen erzeugt eine weitere Referenz zum selben Objekt.
Das Objekt kann dann ĂŒber beide Referenzen verĂ€ndert werden.
Kopie
Bei einer Kopie entsteht ein zweites Objekt. Dieses besitzt dieselben Eigenschaften und Werte.
Die Objekte werden aber individuell verÀndert.
clone
Dies ist ein Kopiervorgang, welcher mit clone
durchgefĂŒhrt werden kann. Mithilfe der __clone()
Methode, kann der Vorgang angepasst werden.
Beim vordefinierten Klonen werden alle Eigenschaftswerte ĂŒbernommen.
Serialisierung & Deserialisierung
Bei der Serialisierung wird eine ReprÀsentation des aktuellen Wertes einer Variable oder eines Objektes erzeugt. Diese ReprÀsentation kann dann gespeichert werden.
include "Fahrzeug.php";
$vespa = new Fahrzeug("Vespa Piaggio", 25, "rot");
$s = serialize($vespa);
file_put_contents("serializedClass.dat", $s);
echo "Objekt serialisiert und in Datei gespeichert";
Wandelt man diese ReprÀsentation wieder um, nennt man dies Deserialisierung.
include "Fahrzeug.php";
if (!file_exists("serializedClass.dat")) {
exit("Datei konnte nicht gefunden werden");
}
$s = file_get_contents("serializedClass.dat");
$vespa = unserialize($s);
echo "Objekt aus Datei gelesen und deserialisiert<br>";
echo $vespa;
Frameworks
Ein Framework bringt in der Regel folgende Vorteile mit sich.
- Erleichtert die Entwicklung
- Hilft beim entfernen von redundantem Code
- FĂŒhrt zu besserer Struktur
- Macht eine Applikation sicherer
- Fehler werden öfter verhindert
Es gibt einige PHP Frameworks. Dies sind 5 bekannte:
Framework | Beschreibung | StÀrken |
---|---|---|
Symfony | Symfony ist ein MVC-Framework, das von bekannten CMS (Drupal, Joomla!, ...) und E-Commerce-Systemen (Magento, PrestaShop, ...) verwendet wird. | Entwicklung von Projekten, Installation und die meisten Komponenten, FlexibilitÀt, Integration mit grossen Unternehmen, Konfiguration auf den Plattformen, Verwendung von wiederverwendbaren Projekten wie Drupal |
Laravel | Laravel ist eines der bekanntesten gratis Open-Source-Frameworks. Es ermöglicht einen sicheren Umgang mit komplexen Applikationen. Das Framework hilft beim Einbauen von Authentifizierung, Caching, Sessions oder Routing. | Viele Features, Sicherheit, Entwicklung von Applikationen mit komplexem Backend, Schnelligkeit |
CodeIgniter | Das kleine und kostenlose Framework hilft bei der Entwicklung von dynamischen Webseiten. Mit CodeIgniter können auch Komponenten erstellt werden. | Schnelligkeit, Setup, klare Dokumentation, einfaches Erstellen von Webseiten und Komponenten |
CakePHP | CakePHP ermöglicht die Erstellung einer visuell ansprechenden Webseite. Es ist relativ einfach zu erlernen. | Security L Injection PrÀvention, grossartige Dokumentation, einfache Installation, Features wie Validierung und XSS-PrÀvention |
Yii | Yii ist ein komponentenbasiertes Framework, das ideal fĂŒr die Entwicklung moderner Webapplikationen ist. | Einfache Installation, robuste Sicherheitsfeatures, Schnelligkeit und Performance, Daten werden als Objekte verwendet, grosse Community, Erweiterbarkeit, einfach zu lernen |
Fazit
PHP ist etwas verpönt, da es möglich ist, unsauberen und unsicheren Code zu schreiben.
Trotzdem ist PHP im Web Àusserst verbreitet.
Gerade die vielen Vorteile machen die Language interessant. Obwohl PHP eine der einfacheren Sprachen ist, ermöglicht sie die Erstellung von grossen
und populÀren Webseiten.
Und mit der Version 8 (opens in a new tab) wird die Sprache noch ansprechender.