Ich finde, dass da auch nichts extra includet werden muss.
HTML:
<ul>
<li>Obermenüpunkt 1</li>
<ul>
<li>Unterpunkt 1</li>
<li>Unterpunkt 2</li>
<li>Unterpunkt 3</li>
</ul>
<li>Obermenüpunkt 2</li>
<ul>
<li>Unterpunkt 1</li>
<li>Unterpunkt 2</li>
<li>Unterpunkt 3</li>
</ul>
<li>Obermenüpunkt 3</li>
<ul>
<li>Unterpunkt 1</li>
<li>Unterpunkt 2</li>
<li>Unterpunkt 3</li>
</ul>
</ul>
... usw
Also, ich verzichte da lieber auf einen Extra-Include Befehl. Und wenn man das ganze noch dynamisch erstellt mit PHP, hat man noch mehr Übersicht.
Also sowas geht mal gar nich find ich ... Heutzutage wird versucht so wenig Statik wie möglich zu haben.
Bei mir ist das von Fall zuFall unterschiedlich, je nachdem was für Laune ich habe oder wie groß das Projekt werden soll. Aber generell verwende ich eine ähnliche Vorgehensweise wie Felix Jacobi, sinnvolle Unterteilungen machen und MVC verwenden, das heißt ausführende Module (Controller) haben und zu jedem dieser Module ein entsprechendes Template für die Darstellung (View), die Verwendung variiert dabei immer. Mal verwende ich Klassen, mal einfach prozeduralen Code in PHP-Dateien unterteilt. Eigentlich verwende ich aber meist Klassen, daher werden einfach im Kopfteil von index.php alle benötigten Klassen includet und normale Includes fallen komplett weg, weil ich kann das irgendwie nicht leiden, wenn mitten im Code eine include-Anweisung kommt, ich bekomm dabei die Krätze, keine Ahnung. Menüs z.B. lasse ich immer generieren, also nicht wie Lisali statischen HTML-Code, sondern auf irgendeine Weise dynamisch generieren. Das kann man mit Arrays in entsprechenden PHP-Dateien machen, also die Menüeigenschaften wie Menüpunkte, Ziele etc. Das Problem dabei ist, dass man dann aber auch wieder die PHP-Datei selbst anpassen muss, falls neue Menüs hinzukommen oder welche geändert werden. Ich bevorzuge daher inzwischen die Datenbankvariante. Da werden dann einfach entsprechend Tabellen für erstellt und gefüllt. Sollte sich was ändern, so wird dann einfach in der Datenbank an der entsprechenden Stelle gefummelt und gut is. Das Gleiche mit dem Content. Sowas kommt bei mir nicht in eine PHP-Datei, sondern in die Datenbank. Dafür braucht man etwas Erfahrung und muss Ideen für die Umsetzung haben, aber das geht dann dafür umso besser, auch wenn es mehr Zeit beansprucht. Außerdem kann man das System dann für weitere Projekte gut verwenden, da sich der generelle Aufbau nicht großartig ändert, das Prinzip bleibt ja, bekommt nur ein anderes Aussehen.
Wie gesagt, nach Möglichkeit so wenig Statik aufbauen, wie nur geht. Alles, was in irgend einer Weise generierbar ist, generieren lassen und die Dateien so klein wie Möglich halten. Es gibt keine wirklichen Richtlinien, aber man sagt "Alles, was länger als eine Seite ist und wo man scrollen muss, ist Mist". So krass wird das natürlich nicht gesehen, aber soll heißen, dass man alles, was irgendwie ausgelagert werden kann auch ausgelagert werden sollte. Natürlich braucht man nicht übertreiben, aber kleinere Codeschnippsel zu lesen ist angenehmer als übertrieben lange Codes, wo man immer hin- und herscrollen muss und nachher gar nicht mehr weiß wo man zum Schluss war.
EDIT:
Wie man vorgeht ist im Endeffekt davon abhängig, wie groß die Sache wird. Aber gewöhn dir trotzdem eine saubere Struktur an, wie Felix Jacobi es gezeigt hat. Meine sieht z.B. so aus:
/index.php
/inc/
/inc/classes/
/inc/config/
/inc/images/
/inc/css/
/inc/tpl/
/inc/js/
/inc/classes/ kann dabei (je nach Umfang) noch die Unterordner controller/ und utils/ etc. enthalten. Hin und wieder kommen noch Ordner hinzu oder werden weggelassen, kommt auf den Fall dann an. Eine saubere Ordnerstruktur ist das A&O, aber im Vorfeld festlegen und daran halten. Wenn du die Struktur im Nachhinein noch änderst, dann könnten Verweise nicht mehr stimmen und dann ist der Spaß groß ^^ Deswegen plant man ein Projekt auch möglichst gut durch bevor man auch die erste Datei anlegt, im Nachhinein Änderungen machen zu müssen ist einfach schrecklich.
EDIT2:
Für einen leichteren Umgang mit den Pfaden kann man Konstanten in jeder PHP-Datei definieren (falls noch nicht definiert) und mit diesen Arbeiten. Sollte sich dann doch mal ein Pfad ändern, dann braucht man nur noch den Wert der Konstante ändern, also wenig Aufwand. Das kann z.B. so aussehen:
PHP:
if(!defined('INC_DIR_CLASS')) {
define('INC_DIR_CLASS', './');
}
In index.php werden dann einfach alle Konstanten definiert, da die Pfade vom Startpunkt (index.php) ausgehend verwendet werden (die Definitionen in den anderen PHP-Dateien sind nur sicherheitsrelevant, falls doch mal eine Konstante vergessen wurde, weil es sich nicht lohnte). Das kann dann so aussehen:
PHP:
// Verzeichnis-Konstanten
if(!defined('INC_DIR_CLASS')) {
define('INC_DIR_CLASS', './inc/class/');
}
if(!defined('INC_DIR_CONFIG')) {
define('INC_DIR_CONFIG', './inc/config/');
}
if(!defined('INC_DIR_TPL')) {
define('INC_DIR_TPL', './inc/tpl/');
}
// Dateien importieren
include_once INC_DIR_CONFIG . "mysql.conf.php";
include_once INC_DIR_CLASS . "MySqlDbConnector.class.php";
include_once INC_DIR_CLASS . "LoginController.class.php";
include_once INC_DIR_CLASS . "MenuController.class.php";
include_once INC_DIR_CLASS . "System.class.php";