Es kann vorkommen, dass Sie eine Klasse oder ihre Methoden ohne die Option einer typischen Vererbung ändern müssen. Nehmen Sie zum Beispiel die folgende Klasse:
class third_party_library { function buggy_function() { return 'bad result'; } function other_functions(){ return 'blah'; } }
Vielleicht möchten Sie die Methode buggy_function() durch eine wünschenswertere Implementierung ersetzen, aber dies durch Vererbung ist nicht möglich. PHP unterstützt nativ kein Monkey-Patching, wodurch Sie Klassen ändern können, nachdem sie definiert wurden.
Eine mögliche Lösung ist die Verwendung der PECL-Runkit-Bibliothek, die eine runkit_method_redefine()-Funktion bereitstellt. Dadurch können Sie Methoden ändern, indem Sie Codezeichenfolgen auswerten:
runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\'' );
Dieser Ansatz hat jedoch Nachteile. Das Ändern von Code durch String-Auswertung kann gefährlich sein und das Debuggen kann eine Herausforderung sein.
Eine andere Alternative besteht darin, das Hinzufügen einer Funktion zur Klasse in Betracht zu ziehen, anstatt eine vorhandene zu ändern. In einigen Sprachen, beispielsweise C#, ist dies mithilfe von „Teilklassen“ möglich. Es ist jedoch wichtig zu beachten, dass dies aufgrund von Framework-Einschränkungen in Ihrem speziellen Fall möglicherweise nicht möglich ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3