Funktionen in includes als "privat" deklarieren
Christian
- php
Hallo,
ich habe mir ein paar PHP-"Module" geschrieben, die ich so wie sie sind per require_once einbinde, wenn ich sie brauche. Dabei kommt es vor, dass in verschiedenen "Modulen" die gleiche Funktion benötigt wird (die ich aber sonst nicht brauche) und es kommt folglich zu einem "Cannot redeclare...".
Gibt es nun eine Möglichkeit bestimmte Funktionen als "privat" o.ä. festzulegen, sodass sie nur innerhalb des "Moduls" gilt?
Grüße
Christian
hi,
ich habe mir ein paar PHP-"Module" geschrieben, die ich so wie sie sind per require_once einbinde, wenn ich sie brauche. Dabei kommt es vor, dass in verschiedenen "Modulen" die gleiche Funktion benötigt wird (die ich aber sonst nicht brauche) und es kommt folglich zu einem "Cannot redeclare...".
Wie das, wenn doch require_once verwendet wird?
Geht's etwas genauer, mit Beispiel?
gruß,
wahsaga
Hi,
Wie das, wenn doch require_once verwendet wird?
Geht's etwas genauer, mit Beispiel?
stimmt, war etwas ungenau formuliert.
Ich habe also mehrere "Module", in denen dieselbe Funktion definiert wird, weil ich sie eben in jedem brauche. Die Module selbst sind voneinander unabhängig. Mal brauche ich das eine, das andere, mehrere oder keines. Und damit die Module wirklich unabhängig sind, sind halt alle Funktionen, die dieses Modul braucht, auch dort definiert.
Binde ich nun zwei Module ein, habe ich möglicherweise eine Funktion doppelt.
Grüße
Christian
echo $begrüßung;
Ich habe also mehrere "Module", in denen dieselbe Funktion definiert wird, weil ich sie eben in jedem brauche. Die Module selbst sind voneinander unabhängig. Mal brauche ich das eine, das andere, mehrere oder keines. Und damit die Module wirklich unabhängig sind, sind halt alle Funktionen, die dieses Modul braucht, auch dort definiert.
Ja, und wenn du einen Fehler in einer Funktion feststellst, musst du durch alle Module rennen und alle Kopien einzeln korrigieren. Auch aus diesem Grund hat man das Kozept der Code-Bibliothek erfunden. Den Vorteil, eine Codestelle zu haben, die bei Bedarf in mehrere Anwendungen eingebunden werden kann, halte ich für wichtiger als eine Unabhängigkeit kleiner Teile, die sich dann gegenseitig behindern.
Die Code-Bibliothek kann irgendwo an zentraler Stelle liegen und über den include_path erreichbar gemacht werden.
echo "$verabschiedung $name";
echo $begrüßung;
Gibt es nun eine Möglichkeit bestimmte Funktionen als "privat" o.ä. festzulegen, sodass sie nur innerhalb des "Moduls" gilt?
Namensräume lassen sich mit Klassen nachbilden. (Man muss dann auch nicht unbedingt Instanzen erzeugen. Methoden lassen sich auch statisch aufrufen.)
Einfacher ist es sicher, wenn du deinen Funktionen eindeutige Namen vergibst. Wenn deine Funktionen unterschiedliche Aufgaben haben aber gleich heißen, solltest du dir vielleicht mehr Mühe beim Benennen geben.
echo "$verabschiedung $name";
Hi,
Namensräume lassen sich mit Klassen nachbilden. (Man muss dann auch nicht unbedingt Instanzen erzeugen. Methoden lassen sich auch statisch aufrufen.)
Das ist eine gute Idee.
Einfacher ist es sicher, wenn du deinen Funktionen eindeutige Namen vergibst. Wenn deine Funktionen unterschiedliche Aufgaben haben aber gleich heißen, solltest du dir vielleicht mehr Mühe beim Benennen geben.
Beim Benennen geb ich mir schon Mühe. Daran liegts also nicht :)
Grüße
Christian