Late Static Binding: "self" と "static" を理解する
PHP 5.3 ライブラリを PHP 5.2 に変換するというコンテキストでは、 「return new static($options)」による遅延静的バインディングの使用は、互換性の問題を引き起こします。これを「return new self($options)」に置き換えても、同じ結果は得られません。 PHP 5.2 には、後期静的バインディングのサポートがありません。
違いを理解する
明確にするために、「self」と「static」の違いはクラス バインディングにあります。
例:
class A { public static function get_self() { return new self(); } } class B extends A { public static function get_self() { return new self(); } } $a_self = A::get_self(); $b_self = B::get_self(); // $a_self is an object of class A // $b_self is an object of class B
結論として、遅延静的バインディングを使用するコードを PHP 5.2 に変換する場合場合は、ロジックを修正してこの機能を削除することを検討してください。 「self」は場合によっては回避策として使用できますが、その制限されたバインディング動作を理解することが重要です。
以上がPHP 5.2 から 5.3 への移行: 後期静的バインディングにおける「self」と「static」はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。