technikum29: development-Zone

PHP

Ist PHP ein möglicher Ersatz für SSI?

Zustand zum Jahresbeginn 2010

Die technikum29.de-Homepage hat in den letzten Jahren enorme Ausmaße angenommen. Mit mittlerweile mehr als 600 Dateien, davon etwa 100 deutschsprachige und 100 englischsprachige Seiten (und unglaublichen 400 Bilder, Rest Lernprojekte) sind an die Organisation der Daten einige Anforderungen gestellt. Prinzipiell würde man an dieser Stelle zu einem CMS oder etwa einer Wiki-Software greifen – wie auch hier zuletzt im Bericht zur Versionszählung 2009 vor vier Monaten berichtet. In selbigem Artikel wurden allerdings auch die Kontra-Argumente genannt. Seit damals ist hinzugekommen, dass der Inhaber der Homepage mit der Tatsache, rohes HTML zu bearbeiten, durchweg zufrieden ist.

Missstände und die Alternative PHP

In letzter Zeit ist recht häufig aufgefallen, dass die bestehende SSI-Struktur unflexibel für die Installation der Homepage auf anderen Servern, also konkret für den SVN-Checkout etwa zwecks Übersetzungsarbeit, ist. Zwar benötigt man auf dem Zielserver nur SSI, allerdings dann aber doch einen eigenen (virtuellen) Host, d.h. letztlich eine eigene Domain. Das erschwert die Übersetzung doch ungemein, lässt sich sich halt nur auf Servern installieren, auf denen man über Administratorrechte verfügt.

Nicht so gravierend fällt meines Erachtens derzeit die Inflexibilität und der umständliche Syntax ins Gewicht. Allerdings gibt es Alternativen, die gar nicht so teuer erkauft werden müssen. Legt man den Grundsatz, dass Entwicklerzeit deutlich teurer als Rechenzeit ist, zugrunde, dann müssten solche Alternativen umgehend umgesetzt werden.

Bei diesen Alternativen handelt es sich freilich um Scriptsprachen wie PHP – Scriptsprachen, die in diesem Semiprofessionellen Betrieb gerade heutzutage geradewegs wieder verpönt sind. Dieser Artikel soll nun also die Vor- und Nachteile vom Einsatz von PHP in der Homepage erläutern.

Warum gerade PHP?

Weil es sich für die Anwendung in der technikum29.de-Homepage geradezu aufdrängt. Quasi die komplette Website besteht aus statischem Text (HTML). Lediglich die Seitenzusammenhänge und Menü/Header werden über trickreichen Einsatz von SSI eingebunden. Die meisten dazu nötigen Hacks (das kann man dazu bereits fast sagen, denn mitselbigem bringt man SSI bereits an seine Einsatzgrenzen) sind weitgehends in eingebundene Dateien (menu.inc.shtm, header.inc.shtm) ausgelagert, in den Inhaltsseiten selbst müssen aber immer noch umfangreiche Variablendefinitionen geschehen. Eine jede Seite sieht dabei im Groben etwa so aus (fernsehen.shtm):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head><!--#set var="title"        value="Fernsehen"
   --><!--#set var="location"     value="fernsehen"
   --><!--#set var="part"         value="kommunikationstechnik"
   --><!--#set var="url_en"       value="communication/television.shtm"
   --><!--#set var="prev"         value="tontechnik.shtm"
   --><!--#set var="prev_title"   value="Tonaufnahme- und Wiedergabetechnik"
   --><!--#set var="next"         value="faxtechnik.shtm"
   --><!--#set var="next_title"   value="Telegraphie-, Fax- und Schreibtechnik"
 --><title>Technikum29 - <!--#echo var="title" --></title>

    <!--#include virtual="/de/inc/head.inc.shtm" -->
    <meta name="keywords" lang="de" content="Fernsehen, Videorekorder, Saba, Ampex, Saba Schauinsland W II, Ampex VR 650" />
    <meta name="t29.SVN" content="$Id: fernsehen.shtm 137 2010-01-03 23:26:29Z heribert $" />
</head>
<body>
<!--#echo encoding="none" var="heading" -->
<div id="content">
    <h2><!--#echo var="title" --></h2>

    <p>Lorem Ipsum dolor este ... der Inhalt der Seite</p>

</div><!-- end of content -->
<!--#include virtual="/de/inc/menu.inc.shtm" -->
</body>
</html>

Zunächst werden also zahlreiche Variablen definiert; zunächst erst einmal allgemeine Metavariablen wie Seitenname, etc., dann aber auch Verweise auf englische Seiten oder die Seitenrelationen für die vorherige und nächste Seite. Hier fällt bereits auf, wie Redundanzen entstehen: Möchte man den Titel einer einzelnen Seite ändern, muss man ihn dafür an mindestens vier Stellen ändern:

Wie es mit PHP aussehen könnte

Das selbe Beispiel könnte unter Verwendung von PHP wie folgt aussehen:

<?php
  $seiten_id = 'fernsehen';
  $version = '$Id: fernsehen.shtm 137 2010-01-03 23:26:29Z sven $';
  $meta_daten = array(
    'keywords' => 'Fernsehen, Videorekorder, Saba, Ampex, Saba Schauinsland',
  );

  require '/shared/includes/header.inc.php';
?>
    <h2><?php seitentitel_ausgeben(); ?></h2>

    <p>Hier steht der Inhalt der Seite</p>
<?php ende_der_seite(); ?>

Ich denke die reine Optik und die Aussagekraft der Variablennamen und Notation spricht erst mal für sich.

Pro/Kontra

Pro PHPKontra PHP
(Psychischer) Eindruck des Quelltextes: Weniger Overhead, aussagekräftigere Variablennamen
Weniger Redundanz etwa durch schlaues Menü-Array an einer Stelle, aus dem alle notwendigen Informationen (vorherige/nächste Seite, etc.) dynamisch ausgelesen werden können Seitentitel stehen nicht mehr auf der Seite selbst, sondern nur noch in einer komplizierten PHP-Datei
Portierbarkeit: Arbeitskopien können auch ohne Adminrechte laufen, kein eigener Host mehr nötig Portierbarkeit: Dafür muss aber PHP installiert sein
PHP ist sehr oft verfügbar, auf Windows-Rechner etwa im WAMP-Komplettpacket

Fazit

Die Abwägung ist hier wirklich ernsthaft problematisch und wird diskutiert.