php - PHP 中大型项目的对象和类结构

标签 php

我即将开始一个 PHP 大型项目。我希望代码尽可能干净,所以我开始学习使用类和对象进行编程。问题是,这是构建它的正确方法吗?

我想到的是三个主要类(class)。 dogetgeneral

一般来说,我会有一个连接数据库的功能。 在 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");

问题是,这是正确的方法吗?当doget中有超过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/

相关文章:

php - 文本比较

php - 有没有好的方法(PHP 类)来访问 Gmail 联系人?

php - 地理定位以找到最近的城市

php - 优化我的日志报告查询

php - Xubuntu Linux - 为什么我的本地主机不将我定向到我的虚拟主机站点?

PHP MySQL 更新列错误

php - Curl 返回空字符串

php - 如何选择时间戳列

php - 通过 php 查询包含表情符号的表返回问号

php - 一个奇怪的字符编码案例,PHP 到 MySQL 并返回