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, 4808 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 ..
Ähnliche Inhalte
Webbrowser
gelöst Internet Explorer 11 Desktop Benachrichtigung möglich? (2)

Frage von mexx zum Thema Webbrowser ...

LAN, WAN, Wireless
Tethering oder "mobiler Hotspot" im LAN verhindern - überhaupt möglich? (11)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

PHP
gelöst Wie updatet man Php ab auf Windows ? (5)

Frage von rainergugus zum Thema PHP ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(5)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Statische Routen mit Shorewall, ISC-DHCP Server konfigurieren für Android Devices (24)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Windows Server
Exchange HyperV Prozessorlast (18)

Frage von theoberlin zum Thema Windows Server ...

Hardware
16-20 Port POE Switch mit VLAN (18)

Frage von thomasreischer zum Thema Hardware ...