Include & Switch in andere Form

Salvo

Grünschnabel
Hallo, so ich Programmiere gerade einen CMS für meine eigene seite, ich weiss es gibt viele cms aber die haben meist zu viel schnick schnack oder halt nicht die sachen die mann selber haben will und mann muss sich stunden lang die quellcodes dursch schauen damit mann einen überblick bekommt, so nun zu meinen problem..

ich will es so gesehen Modulär aufbauen das würde bedeuten das die module in verzeichnisse abgelegt sind

Verzeichnis Struktur
[0] Module [1] Gbook

so und die Vezeichnis Struktur der Module Würde so Ausschauen

Gbook
-tpl
-lang
gbook.php
eintragen.php
admin.php

so meinen gedanke war es so zu lößen

in den Gbook Verzeichnis setze ich noch eine Datei an die heisst Bsp. mod.php

mit folgenden code
PHP:
$section = array();
$section['gbook'] = 'gbook.php';
$section['eintragen'] = 'eintragen.php';
$section['admin'] = 'admin.php'; 
if (isset($_GET['section'], $section[$_GET['section']])) {    include $section[$_GET['section']];} else {    include $section['gbook'];}

so und in der haupt index.php würde ich es so machen

PHP:
$page = $_REQUEST['page'];
if(empty($page)) { $page='start'; }
else { 
$page = 'module/' . $page . 'mod.php';

so also wenn ich jetzt index.php?mod=gbook aufrufen würde, zeigt er mir die gbook seite an.. also funktioniert meine praxis die ich geschrieben habe, aber ich finde das bloss umstendlich.. weiss einer wie ich das anders lösen könnte ohne eine extra datei anzulegen..

also wenn ich index.php?mod=gbook aufrufen würde er genau weiss das die datei gbook.php im verzeichnis module/gbook/ sich befindet

sag schon mal danke an alle
 
Du könntest dir eine kleine Funktion dafür bauen.

PHP:
function loadModule($name)
{
  if(file_exists('./modules/'.$name.'/'.$name.'.php'))
  {
    // include file
  }
  else
  {
    // module doesn't exist
    // echo error message or output standard module
  }
}

Soetwas in diese Richtung eben.
 
Hi Felix daran habe ich auch gedacht aber leider gibt es da auch wieder einen problem

du übergibst mit deine Lösung ja nur einen Parameter und zwar $name das würde ja dann bedeiuten wenn ich jetzt beispiel news aufrufen würde der verzeichnis plus datei news heissen müsste dann hätte ich es auch so lösen können

PHP:
$page = $_REQUEST['page']; 
if(empty($page)) { $page='start'; } 
else {  
$page = 'module/' . $page . '/'. $page . ' .php';

das würde das gleiche bewirken aber trotzdem danke
 
Mehr sollte das Kernmodul auch nicht tun.

Jegliches URL Handling und Verteilung der Aktionen sollte das Modul selbst tun.
Und dann eben mit weiteren URL Parameter abhandeln.

Code:
index.php?page=gbook&action=add
 
danke Felix für deine antworten,

ja ich verstehe wie du das meinst dann könnte ich so gesehen meine struktur lassen wie oben beschrieben weil da tut sich nicht wirklich viel.. ich dachte jetzt das es eine funktion gibt die halt überprüft ob es in irgendeinen verzeichnis die news.php existiert und die dann einbindet.. mann es wird wieder zeit mich wieder einzuarbeiten in php
 
Wenn du auf die objektorientierte Programmierung umsteigen würdest, gäbe es da [phpf]__autoload[/phpf]

Du könntest dir natürlich auch einfach eine komplexere Funktion zusammenbasteln.
Mit [phpf]glob[/phpf] durchsuchst du das Modulverzeichnis und die darunterliegenden Module und suchst nach der Datei...
Eine rekursive Version von [phpf]glob[/phpf] findest du in den Kommentaren der Funktion.
 
ja leider habe ich mich mit oop noch nicht ausernander gesetzt, da ich wirklich schon lange nicht mehr dazu kam weil ich viel arbeite (wie jetzt auch) und ich mich aber wieder einarbeiten will und ich meine seite schon seid 1jahr umprogrammieren will, habe ich gedacht ich nehme das jetzt wieder im angriff und versuche mal was..

das mit der glob() funktion scheint wohl nicht schlecht zu sein werde mich gleich mal schlau machen wie das funktioniert und wie ich das umsetzen kann
 
Kurz noch ein kleiner Einwurf.
Halte dich bitte an die Netiquette, insbesondere an #15 was Groß- und Kleinschreibung angeht, danke.
 
werde ich machen.. bin mal gespannt ob das alles klappt aber oop ist eingendlich einfach nur auf basis von klassen aufgebaut oder habe ich oop jetzt falsch verstanden.. also könnte ich ganz normal programmieren und einfach die klassen hinzufügen oder? bin echt nen neuling in sachen oop und im netzt findet mann nicht wirklich viel in deutsche sprache
 
Zurück