PHP Code auf verschiedene Dateien verteilen
Eingetragen von JenneMander (112)
am 17.03.2014 - 09:50 Uhr in
am 17.03.2014 - 09:50 Uhr in
Hallo Forum,
ich schreibe gerade ein eigenes Modul, dieses wird leider mit der Zeit immer umfangreicher und unübersichtlicher. Wie kann ich den php-Code auf mehrere Dateien verteilen? Aktuell befindet sich alles in der modulname.module Datei.
einen guten Start in die Woche wünschend
Jens
- Anmelden oder Registrieren um Kommentare zu schreiben
aber klar doch
am 17.03.2014 - 09:54 Uhr
wie immer bei PHP, kann man includes schreiben.
Du solltest diese Dateien in der .info eintragen.
Ich würde ein includes Verzeichnis unter dem Modulverzeichnis machen, damit die Gliederung klar ist.
Das kannst du in vielen Modulen abgucken.
Grüße
Ronald
Du kannst diese einfach in
am 17.03.2014 - 09:56 Uhr
Du kannst diese einfach in eine modulname.funktionen.inc auslagern. Zum Einbinden der Datei kannst Du dann module_load_include() verwenden.
Wenn Du einen hook_menu() verwendest, schau Dir mal den Parameter "file" an
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Besten Dank.
am 18.03.2014 - 07:58 Uhr
Besten Dank.
Code-Auslagerung auch aus Performance-Gründen
am 18.03.2014 - 11:17 Uhr
In die .module müssen primär Drupal-interne API-Aufrufe, damit Drupal diese auch berücksichtigen kann. Codebestandteile, die wiederum nur in bestimmten Fällen benötigt werden sollten nach Möglichkeit auch ausgelagert werden, damit diese nicht unnötig von Drupal geladen werden.
Das von Sense erwähnte hook_menu ist ein gutes Beispiel dafür. In der .module teilen wir Drupal mit, daß auch unser Modul Pfade bereitstellt und welche. Aber nur, wenn diese tatsächlich aufgerufen werden, wird der Code benötigt, der dann Daten an diese Pfad-Aufrufe zurück geben soll. Zu diesem Zweck gibt es die Möglichkeit direkt eine Pfad-Angabe für ein include zu machen, das dann Drupal automatisch macht.
Für eigene Konstruktionen muss man das manuell machen. Wenn man z.B. eine Funktion definiert, die auch andere Module als API benutzen sollen, macht es Sinn, diese innerhalb des .module Files zu definieren, damit man zur Anwendung dieser Funktion nicht erst das entsprechende .inc File per include einbinden muss. Wir können allerdings innerhalb unserer Funktion dann Code in eine .inc auslagern und per include einbinden. So wird der besagte Code nur geladen wenn tatsächlich unsere Funktion auch aufgerufen wird.
# DrupalCenter-Moderator # https://www.drupal.org/u/c-logemann
# CTO der Nodegard GmbH: Tech. Concepts | Security + Availability Operations / Wir unterstützen IT-Abteilungen, Agenturen, Freiberufler:innen
Hi Carsten, vielen Dank für
am 18.03.2014 - 11:36 Uhr
Hi Carsten,
vielen Dank für deine Antwort, ich denke ich brauch für deine Ausführung ein Beispiel.
Ich habe hier mal meine abgespeckte(dadurch von der Logik eventuell Sinnfrei) Version meines Modules:
function mein_modul_menu()
{
$items = array();
$items['mein_modul'] = array(
'title' => 'mein_modul',
'description' => 'Hier teste ich mich in der Modul-API voran',
'page_arguments' => array(1,'foo'),
'access callback' => TRUE,
'page callback' => 'sync_function_sync',
);
return $items;
}
function sync_function_sync()
{
updateNodes();
deleteNodes();
echo 'Funktionen sind durchgelaufen';
}
function deleteNodes()
{
//jede Menge Code
}
function updateNodes()
{
//jede Menge Code
}
Die beiden Funktionen deleteNodes und updateNodes möchtei ch gerne in separate Dateien auslagern, welches Vorgehen hältst du für ratsam? Ich denke das sind in der Realität solche explizite Formen, dass kein weiteres Modul auf diese zugreifen wird.
mit bestem Gruß
Jens