Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Überladen von Methoden in PHP möglich?

Frage Entwicklung PHP

Mitglied: Closed

Closed (Level 1) - Jetzt verbinden

23.10.2011 um 16:51 Uhr, 4646 Aufrufe, 7 Kommentare

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
Mitglied: msr972
23.10.2011 um 17:22 Uhr
Nein, es geht nur das Magic __call
Bitte warten ..
Mitglied: msr972
23.10.2011 um 19:14 Uhr
Noch ein kleiner Tipp, bau Dir doch nen Wrapper drum herum, das ist am einfachsten und ist vorallem anpassbarer...
Beispiel:

01.
 
02.
function w_fgc($file, $params = null) { 
03.
    if( $params === null ) { 
04.
        // normaler Aufruf von fgc ohne Rechteüberprüfung oder Parameter usw... 
05.
        // oder gleich return
06.
    } else if ( is_array($params)) { 
07.
        if( isset( $params['hasRight'] === true ) ) { 
08.
            // hier z.B. zusätzliche Validierung ob hasRights sein kann und so weiter 
09.
            // + dein fgc 
10.
        } else
11.
            // hier irgendwas anstellen lassen z.b. Protokollierung für Verstoß usw. 
12.
            return
13.
14.
15.
};
Das wäre jetzt der QnD Way wie ich es auf die Schnelle machen würde ohne OOP...
Bitte warten ..
Mitglied: Closed
23.10.2011 um 19:19 Uhr
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
Bitte warten ..
Mitglied: EvilMoe
23.10.2011 um 21:35 Uhr
In den Editoren gibt es nicht umsonst eine "Suchen und ersetzen" Funktion ;)
Bitte warten ..
Mitglied: Closed
23.10.2011 um 22:09 Uhr
Das ist nicht ansatzweise das, worum es geht...
Bitte warten ..
Mitglied: msr972
24.10.2011 um 09:39 Uhr
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

Hmm... Ich glaube zu verstehen, was Du vor hast, sprich eine Function schreiben ala:
01.
function wrapper_function( functionname, $paramsForFunctionname ) { 
02.
    // Body 
03.
}
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?
Bitte warten ..
Mitglied: Closed
24.10.2011 um 18:58 Uhr
derzeit plane ich es als OOP, da ich damit wesentlich flexibler bin.
es wäre halt wirklich genial, wenn die user sich nciht umgewöhnen müssten und das framework mit den "standardfunktionsaufrufen" verwenden könnten. das ginge aber erstens nur prozedural und zweitens bräuchte ich die rechte auch irgendwie als übergabeparameter, was schon wieder dazu führen würde, dass die funktion verändert wird. somit fällt das sicherlich raus.

ich wollte mir noch aspect oriented programming anschauen. hab aber noch gar keine ahnung in welche richtung das geht. bei einem groben überfliegen sah es eventuell hilfreich aus
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...