Php 我应该如何设置我的课程?

Php 我应该如何设置我的课程?,php,mysql,oop,organization,Php,Mysql,Oop,Organization,我开始使用oop来构建一个用户生成数据的站点 有不同类型的数据来自我的类。 我有从数据库中获取数据列表的函数,以及从这些列表中选择一项的函数。 比如说 function Get_Article($aid); //Gets an article function Get_Users_Articles($uid); //Gets a multidemsional array of the users //articles fun

我开始使用oop来构建一个用户生成数据的站点

有不同类型的数据来自我的类。 我有从数据库中获取数据列表的函数,以及从这些列表中选择一项的函数。 比如说

function Get_Article($aid); //Gets an article
function Get_Users_Articles($uid); //Gets a multidemsional array of the users 
                                   //articles
function Get_Latest_Articles(); //Self explanatory by now
function Get_Local_Articles($zip); //Gets articles written by local users
function Get_Local_Users($zip); //Gets all local users

function Get_All_Article_Comments($aid); //Gets a multidimensional array of the 
                                     //comments written for an article
function Get_Article_Comment($cid); //Gets a single article comment
现在,我应该如何设置我的类来组织这些函数。 我应该把它们都放在同一个类中,还是应该将注释与文章分开,或者将检索单个文章/注释的函数与检索文章/注释列表的函数分开。我以后可能会在网站上添加更多允许评论的内容,所以我想把所有的评论功能从其他功能中分离出来。而且,“局部”函数都使用执行数学运算的同一个函数,所以我应该将它们组合在一起,或者只使用继承。。。有什么建议吗

关于oop,我有一个用户类,看起来像。。。 private$user=array()


现在是否有人认为这种方式有什么问题,主要是,我是否应该将用户数据设置为Add\u user函数的参数,而不是插入成员变量?

首先,您需要了解,使用旧的过程样式函数并将其包装到对象中并不会使代码面向对象,这只意味着你正在编写更复杂、更丑陋的过程代码

第二,我强烈建议,事实上,我的建议不能太过分,至少要花一些时间来研究现有的各种PHP框架。虽然您可能永远不会使用它们中的任何一个,但我可以放心地保证,学习它们中的任何一个都会让您更好地掌握面向对象原则和良好的应用程序设计。如果您以前从未见过,请从以下内容开始:

  • Zend框架
  • 西蒙尼
  • CakePHP
  • 太阳框架
此外,如果您从未听说过Martin Fowler或企业应用程序体系结构模式,我强烈建议您尝试获取一份副本。他确实写了这本书,提供了在每个流行的web框架中使用的基本模式

我的“阅读手册回复”到此为止:-p

在您的特定情况下,我将从一个基本的活动记录模式开始,以包含您的数据库访问逻辑和域逻辑。在这种模式中,每个数据库表(用户、文章、评论)都由一个离散对象表示。用户的基本活动记录类将包含用于获取特定用户或用户列表的所有函数,以及用于插入、更新或删除用户的函数。此外,用户活动记录类将包含加载用户文章和评论的方法

shell用户类可能如下所示:

class User extends Active_Record {

public function find() {}

/**
    Single function performs inserts and updates for the object
**/
public function save() {}

public function delete() {}

public function getArticles() {}

public function getComments() {}
}

首先,您需要了解,使用旧的过程式函数并将它们包装到对象中并不会使代码面向对象,这只意味着您正在编写更复杂、更丑陋的过程代码

第二,我强烈建议,事实上,我的建议不能太过分,至少要花一些时间来研究现有的各种PHP框架。虽然您可能永远不会使用它们中的任何一个,但我可以放心地保证,学习它们中的任何一个都会让您更好地掌握面向对象原则和良好的应用程序设计。如果您以前从未见过,请从以下内容开始:

  • Zend框架
  • 西蒙尼
  • CakePHP
  • 太阳框架
此外,如果您从未听说过Martin Fowler或企业应用程序体系结构模式,我强烈建议您尝试获取一份副本。他确实写了这本书,提供了在每个流行的web框架中使用的基本模式

我的“阅读手册回复”到此为止:-p

在您的特定情况下,我将从一个基本的活动记录模式开始,以包含您的数据库访问逻辑和域逻辑。在这种模式中,每个数据库表(用户、文章、评论)都由一个离散对象表示。用户的基本活动记录类将包含用于获取特定用户或用户列表的所有函数,以及用于插入、更新或删除用户的函数。此外,用户活动记录类将包含加载用户文章和评论的方法

shell用户类可能如下所示:

class User extends Active_Record {

public function find() {}

/**
    Single function performs inserts and updates for the object
**/
public function save() {}

public function delete() {}

public function getArticles() {}

public function getComments() {}
}