好吧,我目前正致力于在个人网站上重新编写PHP后端(sorta制作我自己的CMS)以获得乐趣并将其用作学习机会。
我一直在尝试在PHP中学习OOP方法,因为类似乎是保持代码更有条理并最大限度地减少代码重用的好方法。 (尽管如果设计正确,代码重用在非oop系统中并不一定比较普遍)
我的问题是如何处理组织不同的课程:
我将我的项目组织在一张纸上,形式与此相似:
<!-- language: lang-php -->
<?php
class main_website{
#Has a bunch of universal configuration such as a connection to the database
function __construct($includes='webpage1.class.php'){
#will include anything listed above
}
}
class users extends main_website{
#functions relating to users
}
class webpages extends main_website{
#functions relating to all web-pages
}
class webpage1 extends webpages{
#has a set of functions that relate specifically to webpage 1 and won't be used elsewhere
}
class webpage2 extends webpages{
#has a set of functions that relate specifically to webpage 2 and won't be used elsewhere
}
?>
现在,这一直运作良好......是的。但是我已经到了一个点,我正在创建几个类,在某些时候需要通过彼此进行通信;目前我的解决方案是让他们通过他们的父类进行交流,但是让“兄弟”课程互相交谈似乎很苛刻,所以我想问我是否正确理解OOP 。< / p>
OOP上的很多帖子都是如此多样化,很多人对代码设计有如此广泛的看法,我不确定哪种方式是“正确的”。 (至少......正确地说我的项目有点“标准”)
答案 0 :(得分:2)
您应该使用依赖注入容器,例如Symfony的Dependency Injection component(可以单独使用,如文章中所述)来处理此通信。
这将使类的加载更有效(利用lazy instantiation),并使您的类更容易单独进行单元测试。