• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Verzeichnisstruktur gut oder schlecht..

bodo92

Aktives Mitglied
Hi,

ich habe momentan folgende Verzeichnisstruktur:
  • index.php (Leitet weiter auf */verwaltung/*)
  • [DIR] verwaltung
    • index.php (Überprüft den Loginstatus bei false Weiterleitung zum Login, wird keine Seite über GET übergeben gehts ab zur Übersicht *?seite=uebersicht* wird aber eine Seite per GET übergeben wird diese mit require_once($_GET["seite"] . "/index.php") eingebunden.)
    • [DIR] schlauchpruefung
      • .htaccess (Sperrt mit *deny from all* alle Zugriffe und gibt sie mit allow from 127.0.0.1 für den Server frei.
      • index.php (Überprüft nochmal den Loginstatus [Eingentlich überflüssig oder?] liest dann per require_once je nach GET aktion entweder *require_once("eintragen.content.php")* oder eben bearbeiten oder löschen ein. Diese PHP-Datei ist auch die Schnittstelle zur Datenbank, die Aufrufe kommen von den eingelesenen Dateien wie z.B. eintragen.content.php per Ajax)
      • eintragen.content.php (Formular mit Ajax Aufruf an die "Mutterdatei" mit action="<? echo $_SERVER["PHP_SELF"] . "?" . $_SERVER['QUERY_STRING'] ?>">)
    • [DIR] uebersicht
      • .htaccess (wie oben)
      • index.php (Inhaltsübersicht)
  • [DIR] login
    • index.php (Leitet an login.php weiter)
    • login.php (Hasht das passwort mit javascript und sendet es an sich selbst per POST dann wird das Passwort mit einem Salt aus der Datenbank verschlüsselt und danach abgeglichen. Stimmen die eingaben wird eine Session angelegt)
    • logout.php (brauch ich nicht weiter drauf einzugehen)
  • [DIR] fehlerseiten
    • index.php (wird mit einem GET Parameter aufgerufen z.B. ?fehler=403 als default ist 404 hinterlegt der GET Parameter ruft z.B. 403.content.php per require_once auf.)
    • 403.content.php (403 Fehlermeldung)
    • 404.content.php (404 Fehlermeldung)
    • ...
  • [DIR] includes
    • [DIR] css
      • ...
    • [DIR] php
      • .htaccess (wie oben)
      • funktionen.php
      • ...
    • [DIR] js
      • funktionen.php
      • ...
  • [DIR] framework
    • [DIR] bootstrap
      • ...
      • ...

Ich hätte von euch gerne gewusst was ihr hiervon haltet..
Speziell die Verschachtelung der PHP-Dateien wie Beispielsweise beim Aufruf von /verwaltung/?seite=schlauchpruefung&aktion=eintragen wird die /verwaltung/index.php aufgerufen, diese wiederum bindet die index.php unter /verwaltung/schlauchpruefung/ ein die letztendlich den eigentlichen Quellcode über /verwaltung/schlauchpruefung/eintragen.content.php ausgeben lässt..

Hoffe ihr könnt euch in mein durcheinander hineinversetzen ich persönlich finde es ja ganz praktisch. Bin nur gespannt was ihr so für Anregungen für mich habt.
Bin ja für alles offen, und stehe am Anfang vom Projekt also wenn ich was ändern sollte dann jetzt :)

Könnt euch auch gerne selbst ein Bild davon machen: (Aber ACHTUNG Baustelle)
http://feuerwehr.ebelmxi.de/ (Zugangsdaten sind beides Benutzer/Passwort: entwicklung)

Ich freue mich auf eure Kritik oder Verbesserungsvorschläge.
 
Werbung:
Ich bin nicht der große PHP-Entwickler, generell würde ich aber anders machen:
  • Struktur weniger Inhaltsbezogen, eher abstrakt halten. Wenn du dir die Arbeit machst das alles komplett selbst zu programmieren, dann würde ich versuchen die Basis des Werks wiederverwendbar zu machen - für zukünftige Projekte.
  • Damit geht's direkt zum Nächsten: Würde das Projekt so modular wie möglich aufbauen, um es bestmöglich erweitern zu können.
  • Dabei geht es auch stark um die Trennung von Logik, Inhalt und Design. Die Ordner schlauchpruefung und uebersicht würfeln mir zu viele unterschiedliche Anforderungsgebiete zusammen - und das immer nur zu einer Unterseite - wiederverwendbare Komponenten für andere Unterseiten.
Nur ein paar Denkansätze.

Was ich generell am ehesten anders machen würde: Ich würde nicht versuchen das Rad neu zu erfinden.

Edit: Sehe grad, dass du schon mitten in den Arbeiten bist - da komme ich mit meiner Antwort wahrscheinlich zu spät. ;-)
 
@vitus37:

Vielen Dank für deine Antwort :)

Ich habe zwar bereits ein paar Seiten erstellt jedoch dienen die vorerst nur dafür eine Grundstruktur zu finden.
Im Grunde würde ich Projekt gerne so erstellen wie du geschrieben hast also Modular und auch so Portabel wie möglich, ich habe Beispielsweise für jedes Input-Feld das irgendwo verwendet wird eine Input PHP-Datei erstellt um es dann von jeder Seite per require einzubinden wäre ja blöd wenn ich mal was ändern muss und dann 25 mal an einer anderen stelle ändern muss.

Nur sind eben nicht alle Formulare gleich aufgebaut deshalb ist ein spezifisches auswerten und speichern in der Datenbank leider notwendig, so muss ich für jede Formular-Seite (einsätze, schlauchprüfung) einen eigenen "Handler" der eben je nach Bedürfnis die Formulare zusammenstellt, auswertet und speichert.
 
Werbung:
Dateinamen wie "funktionen.php" würde ich vermeiden, da hier nicht dierekt bewusst ist welche Funktionen diese Datei nun enthält und wieviele. Ich verstehe auch nicht, warum du fast in jedem Ordner eine ".htaccess" hast? Nunja ich kann dir nur die OOP ans Herz legen.
 
Zuletzt bearbeitet:
@nookie:

also würdest du dann eher mit Klassen die als Dateiname abgelegt sind und darin die auf die Klasse bezogenen funktionieren definieren?

Zum Thema .htaccess die im ROOT Verzeichnis liegt erlaubt den Zugriff für alle denn da es hier mein Entwicklungsserver ist liegt das Projekt unterhalb des ROOT Verzeichnis der Hauptdomain und die anderen liegen immer in Ordnern wo ausschließlich *.php Dateien liegen, die Frage ob es wirklich notwendig ist habe ich mir selbst schon Gestellt da Apache php Dateien ja nicht listet aber ich denke sicher ist sicher.

Ich würde mich sehr gerne mal an Objekt Orientierter Programmierung in PHP versuchen hatte schonmal Berührung mit Java hab es teilweise aber nicht kapiert.
Hat jemand paar Tipps für den Einstieg in die OOP in PHP, entweder Tutorials oder so ne kurze Beschreibung zum Projektdesign?
 
also würdest du dann eher mit Klassen die als Dateiname abgelegt sind und darin die auf die Klasse bezogenen funktionieren definieren?
Yes.

Beispiel:
PHP:
<?php
class Authentication {

      private $username;
      private $password;

      public function setUsername($username) {
                  ...
      }

     public function setPassword($password) {
                  ...
     }

     public function checkLogin() {
               ...
     }

      ...
}
?>
Den Namen am besten in der CamelCase Notation angeben, ist einfach besser zu lesen.

Zum Thema .htaccess die im ROOT Verzeichnis liegt erlaubt den Zugriff für alle denn da es hier mein Entwicklungsserver ist liegt das Projekt unterhalb des ROOT Verzeichnis der Hauptdomain und die anderen liegen immer in Ordnern wo ausschließlich *.php Dateien liegen, die Frage ob es wirklich notwendig ist habe ich mir selbst schon Gestellt da Apache php Dateien ja nicht listet aber ich denke sicher ist sicher.
Du könntest in jeden Ordner "indexieren" mit einer leeren index.html, so kommt ein DL nicht zustande.

Ich würde mich sehr gerne mal an Objekt Orientierter Programmierung in PHP versuchen hatte schonmal Berührung mit Java hab es teilweise aber nicht kapiert.
Hat jemand paar Tipps für den Einstieg in die OOP in PHP, entweder Tutorials oder so ne kurze Beschreibung zum Projektdesign?
Ich bin immer noch für http://php.net/manual/de/language.oop5.php wenn du es dir beibringen möchtest.
 
Werbung:
Hi,

Ich hätte von euch gerne gewusst was ihr hiervon haltet..

Auch wenn es vielleicht nicht unbedingt notwendig sein solle, würde ich dir empfehlen, ein Framework wie ZF oder Symfonie einzusetzen. Dieses Feuerwehr-Backend ist eine gutes Übungsprojekt, um etwas über Site-Strukturen, OOP und Datenbank-Operationen zu lernen.
 
Auch wenn es vielleicht nicht unbedingt notwendig sein solle, würde ich dir empfehlen, ein Framework wie ZF oder Symfonie einzusetzen. Dieses Feuerwehr-Backend ist eine gutes Übungsprojekt, um etwas über Site-Strukturen, OOP und Datenbank-Operationen zu lernen.

Oder PHPCake, obwohl ich eher zu ZF2 tendiere.
 
Werbung:
Habe es grade mal überflogen..

Ich persönlich habe mir Folgendes angewöhnt. Der Name der Klasse wird groß geschrieben, also zum Beispiel class Mensch, wie ihr ja schon gesehen habt. Pro Klasse lege ich eine Datei an, um sie jederzeit wieder verwenden zu können. Diese Datei trägt den Namen [Klassenname].class.php und liegt in einem Ordner namens class. Man kann das auch noch mit zusätzlichen Unterordnern machen, aber darauf gehe ich hier nicht ein. Aus praktischen Gründen werden wir bei den Einstiegstutorials aber größtenteils komplett in der Klassendatei arbeiten.

Die Zeiten wo man "name.class.php" oder "name.inc.php" benutzt hat sind vorbei, bitte nehm dir kein Beispiel daran!
 
Ja ich werde es aufgrund der Übersicht und wegen Funktionen wie __autoload wie schon von dir erwähnten CamelCase Notation machen und auch den Dateinamen genauso wählen und unter /includes/class/DieKlasse.php abspeichern..
 
Ja ich werde es aufgrund der Übersicht und wegen Funktionen wie __autoload wie schon von dir erwähnten CamelCase Notation machen und auch den Dateinamen genauso wählen und unter /includes/class/DieKlasse.php abspeichern..

Für mich sind "includes" und "classes" zwei unterschiedliche paar Schuhe. Eventuell einmal einen Ordner "includes", da komm dann z.B. eine defines.php rein usw und einen Ordner "classes" / "library" wo Klassen abgespeichert werden. Aber die Verzeichnisstruktur sollte die überlassen werden. Wenn du möchtest kannst du dir ja mal Namespaces dazu anschauen, passt ganz gut dazu denke ich.
 
Werbung:
So ich habe mir die letzten Tage auch mal das ZendFramework2 angesehen, ich finde es sehr gut dennoch werde ich Versuchen mein Projekt ohne Framework umzusetzen das geht dann zwar auf kosten der Wiederverwendbarkeit aber ich möchte ja Objektorientiertes Programmieren Lernen und das wird mir von dem Framework genommen..

Ich werde mir jetzt mal ein Konzept überlegen und dann mal drauf los Werkeln, entweder ich Faile oder ich bekomm was brauchbares dabei raus ;)
Danke euch für die Inspiration das mit OOP zu machen :)
 
aber ich möchte ja Objektorientiertes Programmieren Lernen und das wird mir von dem Framework genommen..
Da bin ich aber anderer Meinung. Im Gegenteil, ich persönlich habe durch das Zend Framework 2 mehr Wissen über die MVC Strukur und die OOP bekommen, aber das sei wieder dir überlassen.
 
Sehe ich auch anders. Die Arbeit mit komplexen Frameworks lernt man nur richtig anhand von Projekten. Ich würde ZF 2 nutzen, selbst wenn das für Feuerwehrseite nicht unbedingt notwendig sein sollte.
 
Werbung:
Ok, ich schätze eure Tipps sehr also werde ich mir dazu doch noch einige Gedanken machen und mich weiter in das Framework einlesen.
Gefallen an den Framework habe ich ja gefunden, es ist halt sehr Mächtig was mich auch ein bisschen Abschreckt..

Ich weiß nicht aber wenn Ihr das sagt wird schon was dafür sprechen es von Anfang an zu nutzen :)
 
Zurück
Oben