gpt4 book ai didi

php - 我应该如何设置我的类(class)?

转载 作者:行者123 更新时间:2023-12-01 00:33:57 27 4
gpt4 key购买 nike

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

我的类(class)有不同类型的数据。我有从数据库中获取数据列表的函数,以及仅从这些列表中选择一个项目的函数。例如

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();

public function Get_User_Data($uid){
//get user data from database
return $this->user;
}

public function Set_User_Data($user_array){
$this->user = $user_array;
}

public function Add_User(){
//INSERT data from $this->user into the database
}

现在有没有人发现这看起来有什么问题,主要是,我应该将 user_data 设置为 Add_User 函数的参数,而不是插入成员变量吗?

最佳答案

首先,您需要了解采用旧的过程式风格的函数并将它们包装在对象中并不能使您的代码面向对象,这仅意味着您正在编写更复杂且丑陋得可怕的过程代码。

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

  • Zend 框架
  • 交响音乐
  • CakePHP
  • 太阳能框架

此外,如果您从未听说过 Martin Fowler 或企业应用程序体系结构模式,我强烈建议您尝试获取一本。他从字面上写了一本书,提供了在每个流行的 Web 框架中使用的基本模式。

我的“阅读手动回复”就这么多了:-P

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

一个 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 - 我应该如何设置我的类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com