コードを PHP クラスに含めることはできますか?
コードを直接 PHP クラスに含めるクラスの本体は PHP では不可能です。ただし、メソッドはクラス本体の外側の外部ファイルから組み込むことができます。
ビジネス ロジックの分離
ビジネス ロジックを他のクラス要素から分離したいという要望は理解できます。ただし、別のファイルからメソッドを含めると、PHP 構文規則に違反します。
パフォーマンスに関する懸念
Myclass.php がリクエストごとに 1 回だけ組み込まれる場合、外部ファイル Myclass_methods.phpも1回のみ含まれます。したがって、パフォーマンスは大きな懸念事項ではありません。
適切な解決策: 戦略パターン
クラスの動作を動的に変更するには、外部を組み込むよりも戦略パターンの方が適したアプローチです。ファイル。これには、定義されたメソッドを使用してインターフェイスを作成し、メソッドのさまざまな実装を使用してインターフェイスに準拠する複数のクラスを実装することが含まれます。
実装:
// MeowingInterface.php interface MeowingInterface { public function meow(): string; } // RegularMeow.php class RegularMeow implements MeowingInterface { public function meow(): string { return 'meow'; } } // LolcatMeow.php class LolcatMeow implements MeowingInterface { public function meow(): string { return 'lolz xD'; } } // Cat.php class Cat { private MeowingInterface $meowingBehaviour; public function setMeowingBehaviour(MeowingInterface $meowingBehaviour): void { $this->meowingBehaviour = $meowingBehaviour; } public function meow(): string { return $this->meowingBehaviour->meow(); } }
使用法:
// index.php require_once 'MeowingInterface.php'; require_once 'RegularMeow.php'; require_once 'LolcatMeow.php'; require_once 'Cat.php'; $cat = new Cat(); $cat->setMeowingBehaviour(new RegularMeow()); echo $cat->meow(); // Outputs "meow" // Change behaviour $cat->setMeowingBehaviour(new LolcatMeow()); echo $cat->meow(); // Outputs "lolz xD"
戦略パターンに従うことで、簡単に外部ファイルを組み込むなどの型破りな方法に頼ることなく、クラスの動作を変更できます。このアプローチにより、長期的にはコードの柔軟性と保守性が向上します。
以上が外部メソッドを PHP クラスに含めることはできますか? 最良の代替方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。