itebob
Goto Top

PHP: Sinnvolle Projektstruktur

Ich bin dabei, auf einem Debian-System ein PHP-Projekt zu realisieren. Wenn es darum geht, eine sinnvolle Projektstruktur zu haben, welche Vorteile/Nachteile aus der Sicht Sicherheit/ Programmieraufwand/ Übersichtlichkeit haben diese zwei Varianten:

Variante A

/home/PHPModul
/home/PHPModul/User1
/home/PHPModul/user2
...
/home/PHPModul/userZ


Variante B

/home/PHPModul
/home/User1
/home/user2
...
/home/userZ

wobei in UserXY-Verzeichnissen den Usern Webspace zugeteilt ist. Das PHPModul muss Lese- und Schreibrechte in allen User-Verzeichnissen haben. Mir gefällt die Variante B besser, da ich eine Ebene in der Verzeichnisstruktur weniger habe.

Gruss, Gustav

Content-ID: 280214

Url: https://administrator.de/forum/php-sinnvolle-projektstruktur-280214.html

Ausgedruckt am: 14.04.2025 um 18:04 Uhr

Clijsters
Clijsters 17.08.2015 um 14:38:32 Uhr
Goto Top
Hallo Gustav,

verrate uns doch etwas mehr über das Projekt, welches du realisieren möchtest.
Was soll es tun, wie soll das Ziel (Nicht die Verzeichnisstruktur) aufgebaut sein?

Mir persönlich (ohne deine Anforderungen zu kennen) würde zum Beispiel eher Variante A zusprechen.

LG
Dominique
itebob
itebob 17.08.2015, aktualisiert am 18.08.2015 um 11:37:14 Uhr
Goto Top
Moin,

Zitat von @Clijsters:
verrate uns doch etwas mehr über das Projekt, welches du realisieren möchtest.
Was soll es tun, wie soll das Ziel (Nicht die Verzeichnisstruktur) aufgebaut sein?

Das PHP-Projekt an sich ist für den Server-Betreiber eine Admin-Oberfläche für die Template-Sammlungen. Der Server-Admin schaltet für einzelne User bestimmte Templates frei. Die
  • Inhalte der User-Websites, die in diesen Templates eingebettet sind
  • und die User-Zugangsdaten plus User-Rollen
werden in der Datenbank gespeichert.

Gustav
Clijsters
Clijsters 18.08.2015 um 08:48:13 Uhr
Goto Top
Soll das heißen, jeder User hat eigene Templates, die in Verzeichnissen liegen?
Dann wird Content aus einer DB geholt und in die Templates injiziert?

Die Verzeichnisstruktur ist dann für die Templates?

Wie steht die Beziehung zw. User und Template? 1:1 / 1:n / n:n


LG
itebob
itebob 18.08.2015 aktualisiert um 10:37:21 Uhr
Goto Top
Zitat von @Clijsters:
Soll das heißen, jeder User hat eigene Templates, die in Verzeichnissen liegen?
ja
Dann wird Content aus einer DB geholt und in die Templates injiziert?
korrekt
Die Verzeichnisstruktur ist dann für die Templates?
ja
Wie steht die Beziehung zw. User und Template? 1:1 / 1:n / n:n

Gute Frage. Danke dafür. Und dafür mag ich die administrator.de-Community face-wink.

Die Templates werden u.a. aus den Templates-Schnipseln generiert.
  • Evtl. wird es ein "Basistemplate" geben, das die Pflicht-Bestandteile einer HTML-Seite enthält.
  • dann wird es für einzelne User freigeschaltete Template-Schnipsel geben, die:
    • JavaScripts
    • CSS-Formatierungen
die in einer n:n-Beziehung zu der User-Menge stehen, einbinden. Es ist in der praktischen Anwendung der gesamten PHP-Lösung zu klären, ob ein Basistemplate sinnvoll und praxistauglich ist.

Die für die User freigeschaltete Template-Schnipsel können von den Usern selbst aktiviert/deaktiviert werden.
Clijsters
Lösung Clijsters 18.08.2015, aktualisiert am 21.08.2015 um 10:43:46 Uhr
Goto Top
Nein.
Nein.
Nein.
Das mit den Basistemplates ist ja nett, aber spätestens, wenn dann ein einziger User eine Änderung an einer Stelle braucht, die Teil des globalen Templates ist, ist das Konstrukt wieder über'm Haufen. (Oder man fängt an, sich JS-Brückchen zu bauen...)

Ich würde - ganz simpel - noch etwas schlimmer vorgehen:
Templates/
Templates/templ1
Templates/templ2
[...]
Base/
Base/HeaderStd
Base/FooterStd
Base/HeaderSmall
[...]
Und Berechtigungen in einer DB ablegen. So können n:n Zugriffe komfortabel verwaltet werden.
Das Konzept mit getrenntem Header- und Footerbereich ist sehr gewöhnungsbedürftig, ich finde es in kleineren Projekten aber immer angenehmer.
Da sind deiner Fantasie aber generell keine Grenzen gesetzt.

Ich verwende für kleine Homepages mit CMS z.B. gerne Kirby. Du hast ein Template, z.B. "home.php" / "projects.php" etc.
Dann sog. snippets, wie z.B. "header.php", "footer.php", "werbungsleisteanderrechtenseite.php"..., welche du nach Belieben in deinen Templates abrufst.

Wenn du nun ein CMS-Backend hast, welches mittels intelligenter, eigener ACLs Rechte auf die jeweiligen Teile vergibt, kann man damit auch sicher gut arbeiten.

Was soll das denn am Ende genauer werden? So ganz hältst du dich da ein wenig zurück.
Also, was macht wer mit diesen Templates und wofür sind diese?

LG
itebob
itebob 20.08.2015 um 19:56:27 Uhr
Goto Top
danke für dein ausführliches Kommentar. Deine Anregungen fließen in die Projektstruktur ein.


Zitat von @Clijsters:

Was soll das denn am Ende genauer werden?

Im Grunde genommen wird es ein CMS sein - Schritt-für-Schritt.

Also, was macht wer mit diesen Templates und wofür sind diese?
Die Templates sind für die Kunden, die Webspace und CMS dazu mieten und eigene Website mit Innhalten füllen.