PHP 类 和代码组织
PHP Classes and Code Organization
好吧,我目前正在个人网站上重新设计 PHP 后端(有点像制作我自己的 CMS),这既是为了好玩,也是为了学习。
我一直在尝试学习 PHP 中的 OOP 方法,因为 classes 似乎是使代码更有条理并最大限度地减少代码重用的好方法。 (尽管如果设计正确,code-reuse 在 non-oop 系统中不一定更普遍)
我的问题是我应该如何处理组织不同的 classes:
我将我的项目组织在一张纸上,格式类似于:
<!-- 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
}
?>
现在,这一直运作良好……差不多。但是我已经到了要创建几个 classes 的地步,它们在某些时候需要相互通信;目前我的解决方案是让他们通过 parent class 进行交流,但是让 "sibling" classes 互相交谈似乎很老套所以我想问一下 我是否正确理解了 OOP。
很多关于 OOP 的帖子五花八门,很多人对代码设计有如此广泛的看法,我不确定是哪种方式 "right"。 (至少......就让我的项目有点 "standard" 而言是正确的)
您应该考虑使用依赖项注入容器,例如 Symfony 的 Dependency Injection component(可以独立使用,如文章中所述)来处理此通信。
这将使 类 的加载更高效(利用 lazy instantiation),并且还使您的 类 更容易单独进行单元测试。
好吧,我目前正在个人网站上重新设计 PHP 后端(有点像制作我自己的 CMS),这既是为了好玩,也是为了学习。
我一直在尝试学习 PHP 中的 OOP 方法,因为 classes 似乎是使代码更有条理并最大限度地减少代码重用的好方法。 (尽管如果设计正确,code-reuse 在 non-oop 系统中不一定更普遍)
我的问题是我应该如何处理组织不同的 classes:
我将我的项目组织在一张纸上,格式类似于:
<!-- 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
}
?>
现在,这一直运作良好……差不多。但是我已经到了要创建几个 classes 的地步,它们在某些时候需要相互通信;目前我的解决方案是让他们通过 parent class 进行交流,但是让 "sibling" classes 互相交谈似乎很老套所以我想问一下 我是否正确理解了 OOP。
很多关于 OOP 的帖子五花八门,很多人对代码设计有如此广泛的看法,我不确定是哪种方式 "right"。 (至少......就让我的项目有点 "standard" 而言是正确的)
您应该考虑使用依赖项注入容器,例如 Symfony 的 Dependency Injection component(可以独立使用,如文章中所述)来处理此通信。
这将使 类 的加载更高效(利用 lazy instantiation),并且还使您的 类 更容易单独进行单元测试。