设计一个PHP类。正确的方式

时间:2009-10-26 14:14:13

标签: php

我正在创建一个简单的博客,我想为此使用一个类。我想知道这样做的最佳方式是什么。到目前为止,我可以看到3种方法。我做了一个有链接,帖子和评论的课程。在单个阵列中返回所有这些数据的问题在于,应该只回显一次的数据回显的次数与我返回的行数一样多。有些人会说这是正确的,我应该把所有东西放在一个阵列中。我仍然不相信这是正确的方法。

我真的很感激你们有些人可能会设计一个类来处理这3件事。到目前为止,我知道我所需要的唯一的东西是数据库的链接。我应该使用的其他成员对我不清楚。我想再次就如何做到这一点获得一个观点。

谢谢, 约翰


好的,如果我说了3个这样的方法:

var $db;

function GetPosts() {
//posts
}

function GetComments() {
// blog comments
}

function GetLinks() {
// links for the blog
}

你们可能会使用哪些会员?

另外,我想知道我是否应该有一个调用其他方法的方法。只需一个公共方法,然后将所有其他方法设为私有。 public方法将调用private方法并返回其值。这是可取的吗?

3 个答案:

答案 0 :(得分:1)

如果你想从头开始编写,我首先要为博客的每个部分制作单独的对象,即帖子对象,评论对象,链接对象。

然后你可以考虑这些对象如何相互交互(例如,post对象可能包含一个注释对象数组)以及它们将如何处理基本的CRUD(创建,读取(获取),更新,删除)操作。

答案 1 :(得分:0)

CakePHP使用广泛采用的CakePHP框架tutorial on creating a blog。如果您对编写博客时学习新框架感兴趣,我建议您这样做。

如果您想手动编写所有内容,我建议您创建用于处理加载和保存(持久)您的entites(链接,发表评论)或使用持久性框架(例如Doctrine ORM for PHP)的类

问题是,您可以通过多种不同的方式实现您所描述的功能;没有普遍的答案。如果您提交一些代码,则更容易提供具体建议。

答案 2 :(得分:0)

我不知道你想要实现的任务的细节,但想想一个工厂类Blog,例如有GetPostManager()方法。 PostManager还可以创建,编辑,更新帖子并选择它们。因此,$ Blog-> GetPostManager() - > GetPosts($ datefrom,$ dateto)将返回PostCollection类,它实现Countable和Iterator接口以浏览帖子。 PostCollection是一个包含PostItem类的数组。 PostItem类是一个简单的类,可以映射到数据库的属性。