在我的项目中,假设我正在实例化一个名为SubClass
的类,它扩展了一个名为AbstractClass
的抽象类。在我的文件顶部,我包含一个名为bootstrap.inc
的文件,其中包含每个文件中的AbstractClass
。然后,当我需要它时,我将包含SubClass
的{{1}}包含在AbstractClass
中。
如果我在扩展它的类的文件中包含AbstractClass
(例如SubClass
),有时我在一个文件中使用多个子类并且会出错。我宁愿不通过引导程序在每个文件中包含AbstractClass
,因为我并不总是使用它,但是想不出办法避免这种情况。
我被告知使用include_once()
表示设计不佳,所以避免了这种情况,尽管这只是一种解决方案。
include_once()
还有替代方法吗?
答案 0 :(得分:4)
首先 - 每个文件坚持一个类通常是一个好主意。如果你担心表现,那你就是偏执狂。在制作过程中,您可以随时打开APC来打开APC。
其次 - include_once / require_once没有任何问题。
除非你要设置一些花哨的自动加载魔法,否则每个文件只需坚持一个类。
如果没有一些特别关注的问题(也就是你真正理解的一些事情,而不仅仅是你听过的一些谣言),以下模式就完全可以了:
<?PHP
require_once 'MyAbstract.class.php';
class Concrete extends MyAbstract {
//...
}
// end-of-file
答案 1 :(得分:2)
PHP的Autoloading机制对您来说非常理想。
那就是说include_once()
没有错。那个谈论设计缺陷的人可能指的是一个包含同一个文件的代码流不止一次(因此include_once()
需要超过include()
的代码很可能设计得很糟糕。