Dies ist eine alte Version des Dokuments!
im englischen Original von PHP-FIG PSR-1
Dieser Abschnitt der Standards umfasst Codierungselemente, die erforderlich sind um einen hohen Grad der Kompatibilität zwischen PHP-Codes aus verschiedensten Quellen zu erreichen.
<?php
( Anpassung für WB: <?=
PHP-Code MUSS ausschließlich den langen <?php ?>
Tag ( Anpassung für WB: oder den kurzen Echo ) benutzen. Es DÜRFEN NICHT andere Tag-Variationen benutzt werden.
<?= ?>
Tag
PHP-Code MUSS ausschließlich UTF-8 ohne BOM verwenden.
Ene Datei SOLLTE entweder neue Symbole (Klassen, Funktionen, Konstanten, etc.) deklarieren und keinerlei 'side effects' enthalten, oder aber es SOLLTE ausführbare Logik mit 'side effects' enthalten, aber niemals SOLLTE es beides tun.
Die Phrase 'side effects' bedeutet 'ausführbare Logik', die nicht in Klassen oder Funktionen gekapselt ist und in der Regel beim 'Includen' der Datei sofort unkontrolliert ausgeführt wird.
'side effects' bezeichnen unter anderem: erzeugen von Ausgaben, benutzen von include() oder require(), verbinden zu externen Services, verändern von INI-Settings, auslösen von Fehlern und Ausnahmen, verändern von globalen oder statischen Variablen, lesen oder schreiben in Dateien oder Datenbanken, und vieles mehr.
Anpassung für WB: Dateien mit 'side effects' MÜSSEN speziell abgesichert werden, damit sie nicht durch z.B. DeepLinks aufgerufen werden und Schaden anrichten können.
Das Nachfolgende ist ein Beispiel einer Datei, die sowohl Deklarationen als auch 'side effects' enthält. Ein Beispiel, das zeigt, was man NICHT machen SOLLTE: <PHP> side effect: ändert Ini-Settings ini_set('errot_reporting', E_ALL); side effect: lädt eine Datei include('file.php');
side effect: erzeugt eine Ausgabe echo '<html>'.PHP_EOL; Deklaration: function foo() {
// Funktionskörper
} </PHP> Das zweite Beispiel ist eine Datei, die nur Deklarationen ohne alle 'side effects' enthält. Ein Beispiel, das immer zu bevorzugen ist. <PHP> Deklaration function foo() { Funktionskörper }
bedingte Deklaration ist *kein* side effect! if (! function_exists('bar')) { function bar() { Funktionskörper
}
} </PHP>