我即将开始一个 PHP 大型项目。我希望代码尽可能干净,所以我开始学习使用类和对象进行编程。问题是,这是构建它的正确方法吗?
我想到的是三个主要类(class)。 do
、get
和 general
一般来说,我会有一个连接数据库的功能。 在 do i 中,我将存储所有插入或更新数据库的函数,例如:
class do
{
function createUser($name){
// Do stuff to create user
}
function like($id){
// Do stuff to like the id
}
}
$do = new do;
$do->like("52");
$do->createUser("Bob");
问题是,这是正确的方法吗?当do
或get
中有超过20个函数时,会变得马虎吗?
提前致谢!
最佳答案
记住,对象代表事物、名词(类是事物的类型); “do”是一个动词,这是一个很大的线索,表明它对于对象来说不是一个好的选择。
事实上,在这里,它更像是“模糊操作函数”的命名空间,而不是“模糊检索函数”的“get”命名空间。命名空间也很酷,但它们应该是 static classes ,或actual namespaces - 你永远不需要引用一个“实例”,它们只是坐在那里。
至于“一般”,你永远不应该计划这样的包罗万象;这就像在开始之前放弃对代码进行分类一样。您可能会在稍后得到一个,因为您确实无法将其放在任何地方,但如果您这样做了,您应该感到非常失望。
您在此处提到的代码中的对象可能是:
- 数据库连接
- 用户
- 无论
$id
代表什么
请注意最后一个:“ID”也不是事物,它是用于查找特定事物的标识符。
在$do->like("52");
中,$do
和"52"
都没有任何实际意义。但是,如果“52”是页面的 ID,并且用户也喜欢,那么(非常简单的)OO 实现可能如下所示:
$page = Page::getByID("52");
$current_user->like( $page );
或者也许:
$page = Page::getByID("52");
$page->addLike( $current_user );
代码立即变得更具可读性,并且对象之间的关系变得清晰。 这就是为什么 OOP 成为组织代码如此流行的范例。
我在这里坚持基础知识来理解主要思想;现代 OOP 框架在将事物转化为对象方面会走得更远;例如:
- “工厂”和“存储库”允许创建和加载/保存对象,而无需静态
getByID
调用 - 数据库连接对象将被传递到需要它的对象中,而不是假设它们可以创建自己的对象,这称为“依赖注入(inject)”
关于php - PHP 中大型项目的对象和类结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444601/