継承せずに PHP でクラスメソッドを再定義するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-10 10:07:02
オリジナル
775 人が閲覧しました

How to Redefine Class Methods in PHP Without Inheritance?

継承を使用しないクラス メソッドの再定義

ライブラリ自体を変更せずに、サードパーティ ライブラリ内のメソッドを再定義したいとします。 PHP は、クラスやメソッドを動的に変更する手法であるモンキー パッチをネイティブにサポートしていないため、これは困難になる可能性があります。

runkit などのライブラリは利用可能ですが、文字列の評価とデバッグに潜在的な問題があるため注意が必要です。 .

RunKit を使用したモンキー パッチ

RunKit の runkit_method_redefine 関数は、クラスのバイトコードを操作してメソッドを再定義する方法を提供します。使用するには:

runkit_method_redefine('third_party_library', 'buggy_function', '', 'return \'good result\';');
ログイン後にコピー

このアプローチにより、バグのある関数を置き換えながら元のクラスを維持できます。

クラスへの関数の追加

または、元のメソッドをそのまま維持したまま、クラスに新しい関数を追加することもできます。 「部分クラス」は C# で使用できますが、PHP には同等の機能がありません。

新しい関数を追加するには、次の構文を使用できます。

class ThirdPartyLibraryExtended {
    function my_good_function() {
        return 'good result';
    }
}

$thirdPartyLibrary = new ThirdPartyLibraryExtended();
$thirdPartyLibrary->my_good_function();
ログイン後にコピー

これにより追加されます。既存のメソッドを再定義せずに、my_good_function メソッドを ThirdPartyLibrary に追加します。

以上が継承せずに PHP でクラスメソッドを再定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート