Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

PHP Code auf verschiedene Dateien verteilen

Eingetragen von JenneMander (112)
am 17.03.2014 - 10:50 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

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

‹ [Gelöst]Subtab unter user/edit Komme nicht weiter: Formular-Element Theming für Radio-Buttons ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

aber klar doch

Eingetragen von ronald (3857)
am 17.03.2014 - 10: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.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst diese einfach in

Eingetragen von Sense (1560)
am 17.03.2014 - 10: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Besten Dank.

Eingetragen von JenneMander (112)
am 18.03.2014 - 08:58 Uhr

Besten Dank.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Code-Auslagerung auch aus Performance-Gründen

Eingetragen von C_Logemann (919)
am 18.03.2014 - 12: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.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Carsten, vielen Dank für

Eingetragen von JenneMander (112)
am 18.03.2014 - 12: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

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • anyone has a working Betaflight mirror right now?
    vor 1 Tag 5 Stunden
  • Vielen Dank für Ihren
    vor 1 Tag 9 Stunden
  • Composer ist sehr ratsam
    vor 3 Tagen 8 Stunden
  • Vielen Dank für den
    vor 5 Tagen 19 Stunden
  • Die alten CMS Vergleiche von contentmanager.de
    vor 6 Tagen 7 Stunden
  • Gut gemacht
    vor 6 Tagen 7 Stunden
  • Layout Builder etc. z.B. für Landing Pages
    vor 6 Tagen 7 Stunden
  • Links
    vor 1 Woche 1 Tag
  • Moin,wow, sehr gutes
    vor 1 Woche 2 Tagen
  • Dass ist eine spannende
    vor 1 Woche 3 Tagen

Statistik

Beiträge im Forum: 250314
Registrierte User: 20559

Neue User:

  • Cruzorerm
  • Plandkeews
  • Tepkugem

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 8 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association