2021
PHP Einstieg

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?

Facebook

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

hello.php
<?php
echo "Hello World!";
?>
php hello.php

Browser

index.php
<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
BeschreibungDie 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 Datenmenge1024 ZeichenKeine maximale Begrenzung (abhÀngig von Server und Client)
SicherheitVertrauenswĂŒ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.
Beispielget.php Beispiel (siehe Code unten)post.php Beispiel (siehe Code unten)
get.php
<?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>
post.php
<?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.

connectToDB.php
$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

getData.php
$response = $this->mysqli->query("SELECT * FROM sneaker");
while ($row = $response->fetch_assoc()) {
	echo $row["name"] "<br>";
}

DB Verbindung schliessen

connectToDB.php
$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.

Sichtbarkeitprivateprotectedpublic
ErreichbarkeitNur innerhalb der KlassendefinitionNur innerhalb der Klasse erreichbar, in der sie erzeugt werden, und in davon abgeleiteten KlassenVon ĂŒ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.

Fahrzeug.php
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.

serial.php
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.

deserial.php
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:

FrameworkBeschreibungStÀrken
SymfonySymfony 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
LaravelLaravel 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
CodeIgniterDas 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
CakePHPCakePHP 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
YiiYii 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.