Ursprung von Variablen und Funktionen aus Includes ermitteln
Hans
- php
0 Matti Mäkitalo
0 Tom
Hallo!
Bin seit gestern wieder in einem recht großen Internetportal als PHP-Programmierer für diverse Anpassungen involviert. Beim Einlesen in den Code stoße ich sehr häufig auf globale Funktionen und Variablen, deren Ursprungsdatei meistens nicht auf den ersten Blick ersichtlich ist.
Gibt es eine komfortable Methode, die jeweilige "Elterndatei" einer Variable oder Funktion zu ermitteln?
Danke!
Hans
Hi,
Bin seit gestern wieder in einem recht großen Internetportal als PHP-Programmierer für diverse Anpassungen involviert. Beim Einlesen in den Code stoße ich sehr häufig auf globale Funktionen und Variablen, deren Ursprungsdatei meistens nicht auf den ersten Blick ersichtlich ist.
Gibt es eine komfortable Methode, die jeweilige "Elterndatei" einer Variable oder Funktion zu ermitteln?
Zum einen sind globale Funktionen und Variablen, deren Herkunft nicht direkt erkennbar ist (z.B. am Namen des includes und der Funktion/Variabel, welche einen Hinweis auf die Verwandtschaft geben sollten), meist ein Anzeichen für ein schlechtes Software-Design oder falsche Namenswahl.
Meine Kollegen, welche mit Eclipse entwickeln, nutzen "F3", um den Ursprung der Funktion/Variablen herauszufinden. Ich als CLI+gVim Nutzer nutze einfach grep, wenn ich die Herkunft mal vergessen haben sollte.
Bis die Tage,
Matti
Hello,
Zum einen sind globale Funktionen und Variablen, deren Herkunft nicht direkt erkennbar ist (z.B. am Namen des includes und der Funktion/Variabel, welche einen Hinweis auf die Verwandtschaft geben sollten), meist ein Anzeichen für ein schlechtes Software-Design oder falsche Namenswahl.
Funktionen sind in PHP immer global.
Variablen werden in dem Scope angelegt, in dem sie eingeführt werden.
Wenn also ein Include in einer Funktion durchgeführt wird, stehen die Variablen nur innerhalb dieser Funktion zur Verfügung, die deklarierten Funktionen überleben allerdings die Funktion und stehen im gesamten Script zur Verfügung.
Um dies zu vermeiden, wäre dies einer der wenigen Gründe, warum ich in PHP OOP benutzen würde.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Hello,
Zum einen sind globale Funktionen und Variablen, deren Herkunft nicht direkt erkennbar ist (z.B. am Namen des includes und der Funktion/Variabel, welche einen Hinweis auf die Verwandtschaft geben sollten), meist ein Anzeichen für ein schlechtes Software-Design oder falsche Namenswahl.
Funktionen sind in PHP immer global.
Namensräume (namespaces) oder statische Klassenmethoden als Behelf, wenn PHP < 5.3 vorliegt. Und als Low-Tech Lösung: den Namensraum im Funktionsnamen mitgeben.
Beispiel:
function MyProject_myFunction(...) {
return 'bla';
}
Alle Methoden sorgen dafür, dass neben dem eigentlichen Funktionsnamen ein weiterer Identifizierer zur Verfügung steht. Bei letzterer muss er immer angegeben werden, bei den anderen kann er im lokalen Kontext weggelassen werden (innerhalb einer Klasse dann mit "self"-Prefix).
Bis die Tage,
Matti