Überladen von Methoden in PHP möglich?
Hi,
ich suche einen Weg zum Überladen von Methoden in PHP. Damit ist nicht die __call()-Methode gemeint, sondern ein Weg die standardmäßig definierten Methoden zu überschreiben.
Beispiel: standardmäßig wird file_get_contents($file) mit einem Parameter aufgerufen. Ist es möglich diese zu überschreiben, so dass die Funktion den gleichen Namen hat, aber zwei Parameter entgegennimmt? --> file_get_contents($file, $param2)
Ich brauche dies für eine Überprüfung auf gesetzte Rechte VOR dem eigentlichen Aufruf der Funktion.
Danke
ich suche einen Weg zum Überladen von Methoden in PHP. Damit ist nicht die __call()-Methode gemeint, sondern ein Weg die standardmäßig definierten Methoden zu überschreiben.
Beispiel: standardmäßig wird file_get_contents($file) mit einem Parameter aufgerufen. Ist es möglich diese zu überschreiben, so dass die Funktion den gleichen Namen hat, aber zwei Parameter entgegennimmt? --> file_get_contents($file, $param2)
Ich brauche dies für eine Überprüfung auf gesetzte Rechte VOR dem eigentlichen Aufruf der Funktion.
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175145
Url: https://administrator.de/contentid/175145
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
Noch ein kleiner Tipp, bau Dir doch nen Wrapper drum herum, das ist am einfachsten und ist vorallem anpassbarer...
Beispiel:
Das wäre jetzt der QnD Way wie ich es auf die Schnelle machen würde ohne OOP...
Beispiel:
function w_fgc($file, $params = null) {
if( $params === null ) {
// normaler Aufruf von fgc ohne Rechteüberprüfung oder Parameter usw...
// oder gleich return;
} else if ( is_array($params)) {
if( isset( $params['hasRight'] === true ) ) {
// hier z.B. zusätzliche Validierung ob hasRights sein kann und so weiter
// + dein fgc
} else {
// hier irgendwas anstellen lassen z.b. Protokollierung für Verstoß usw.
return;
}
}
};
Das wäre jetzt der QnD Way wie ich es auf die Schnelle machen würde ohne OOP...
Zitat von @Closed:
das sieht eigentlich schon gar nicht schlecht aus. ich habe halt nach etwas gesucht, mit dem ich es vermeide alle funktionen neu
zu schreiben und diese jedesmal extra zu definieren. aber wenn ich den methodenname als parameter übergebe, ist das ein
ziemlich guter weg, etwas durchzusetzen.
vielen dank schonmal
das sieht eigentlich schon gar nicht schlecht aus. ich habe halt nach etwas gesucht, mit dem ich es vermeide alle funktionen neu
zu schreiben und diese jedesmal extra zu definieren. aber wenn ich den methodenname als parameter übergebe, ist das ein
ziemlich guter weg, etwas durchzusetzen.
vielen dank schonmal
Hmm... Ich glaube zu verstehen, was Du vor hast, sprich eine Function schreiben ala:
function wrapper_function( functionname, $paramsForFunctionname ) {
// Body
}
Würde ich Dir persönlich nicht raten, da Du ja wieder in der Function switch'n/if'n müsstest, da Du ja dann z.B. file_get_content, file, file_set_content usw hättest, wo Du ja einen "Subbody" bräuchtest.
Ich würde tatsächlich für jeden Sonderfall einen Wrapper schreiben. So wie in meinem obigen Beispiel wie es ja nur für den fgc Fall wäre.
Wenn Du (warum auch immer) einen generellen Wrapper benutzt und da z.B. 30 Sonderfälle drin hast, könnte das auf die Performance der Skriptlaufzeit gehen, was wiederum kontraproduktiv wäre.
Ist das ganze denn eigentlich OOP oder prozeduraler Stil?