Heim  >  Artikel  >  Backend-Entwicklung  >  Können externe Methoden in eine PHP-Klasse eingebunden werden und was ist die beste Alternative?

Können externe Methoden in eine PHP-Klasse eingebunden werden und was ist die beste Alternative?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 06:19:09378Durchsuche

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

Externe Methoden in eine PHP-Klasse einbinden

Kann Code in eine PHP-Klasse eingebunden werden?

Code direkt in einbinden Der Rumpf einer Klasse ist in PHP nicht möglich. Methoden können jedoch aus externen Dateien außerhalb des Klassenkörpers eingebunden werden.

Geschäftslogik trennen

Der Wunsch, Geschäftslogik von anderen Klassenelementen zu trennen, ist verständlich. Allerdings verstößt das Einschließen von Methoden aus einer separaten Datei gegen die PHP-Syntaxregeln.

Leistungsbedenken

Wenn Myclass.php nur einmal pro Anfrage eingebunden wird, wird die externe Datei Myclass_methods.php verwendet wird ebenfalls nur einmal berücksichtigt. Daher sollte die Leistung kein großes Problem darstellen.

Richtige Lösung: Strategiemuster

Um das Klassenverhalten dynamisch zu ändern, ist das Strategiemuster ein geeigneterer Ansatz als die Einbeziehung externer Dateien. Dabei geht es darum, eine Schnittstelle mit einer definierten Methode zu erstellen und mehrere Klassen zu implementieren, die der Schnittstelle mit unterschiedlichen Implementierungen der Methode entsprechen.

Implementierung:

// 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();
    }
}

Verwendung:

// 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"

Indem Sie dem Strategiemuster folgen, können Sie das Verhalten einer Klasse einfach ändern, ohne auf unorthodoxe Praktiken wie das Einbinden externer Dateien zurückgreifen zu müssen. Dieser Ansatz bietet auf lange Sicht Codeflexibilität und Wartbarkeit.

Das obige ist der detaillierte Inhalt vonKönnen externe Methoden in eine PHP-Klasse eingebunden werden und was ist die beste Alternative?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn