ホームページ > バックエンド開発 > PHPチュートリアル > 外部メソッドを PHP クラスに含めることはできますか? 最良の代替方法は何ですか?

外部メソッドを PHP クラスに含めることはできますか? 最良の代替方法は何ですか?

Patricia Arquette
リリース: 2024-11-21 06:19:09
オリジナル
425 人が閲覧しました

Can External Methods Be Included in a PHP Class, and What's the Best Alternative?

PHP クラスに外部メソッドを含める

コードを 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 サイトの他の関連記事を参照してください。

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