可以將程式碼包含在 PHP 類別中嗎?
將程式碼直接包含在 PHP 類別中PHP 中不可能有類別的主體。但是,可以包含來自類別主體之外的外部文件的方法。
分離業務邏輯
將業務邏輯與其他類元素分離的願望是可以理解的。但是,包含來自單獨檔案的方法違反了 PHP 語法規則。
效能問題
如果每個要求僅包含一次 Myclass.php,則外部檔案 Myclass_methods.php也將只包含一次。因此,性能不應該成為主要問題。
正確的解決方案:策略模式
要動態更改類別行為,策略模式是比包含外部更合適的方法檔案。它涉及使用已定義的方法來建立接口,並使用該方法的不同實作來實作符合該介面的多個類別。
實作:
// 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中文網其他相關文章!