【问题标题】:Ideal Way of performing CRUD Operations in OOPS via PHP通过 PHP 在 OOPS 中执行 CRUD 操作的理想方式
【发布时间】:2014-02-25 09:37:16
【问题描述】:

我刚开始为我的项目使用 PHP 中的 OOPS。并希望确保我为项目学习正确的 OOP 方法。

我的班级是这样的:

class user
{
    //class variables

    public function __construct
    {
        //initializes all class variables to null
    }

    public function setById($id)  
    {
        //Queries Database for row matching $id and sets the class variables with
        the same values as returned in result
    }

    public function setValues($array)
    {
        foreach($array as $key => $value)
        {
            $this->$key = $value;       
        }   
    }

    public function update()
    {
        //updates the database table from the class variables
    }

    public function delete()
    {
        //deletes the row matching the class variable called id
    }
}

现在进行更新操作:

1) 我将首先声明对象。 2) 然后调用 SetById() 函数,并将参数作为我希望更新的行的 id。这将设置数据库中的所有当前值。 3) 然后将调用 setValues() 函数来更新类变量中的值。 4) 然后调用update函数根据类变量的值更新数据库行。

这是更新 OOP 方法的正确方法吗?

对于删除操作:

1) 我将首先声明对象。 2) 然后调用 SetById() 函数,并将参数作为我希望更新的行的 id。这将设置数据库中的所有当前值。 3) 然后调用delete函数删除类变量中匹配id的行。

这是正确的做法吗?

【问题讨论】:

    标签: php oop crud


    【解决方案1】:

    这取决于。您是否打算与该用户做任何事情? (除了显示)?

    如果您不这样做,请使用 Table Data Gateway 模式。如果您确实有与用户相关的某种逻辑,请选择 Data Mapper 模式。

    主要区别在于表数据网关的重点是表(每个表一个网关对象,允许您对该表进行操作)。然而,对于 Data Mapper,重点是域对象(即User 对象),并且每个域类通常有一个映射器类。 (即UserUserMapper)。

    【讨论】:

    • 感谢您的评论。我将研究您在此处链接的两种模式。但我的问题是:我的代码是否违反了任何 OOP 原则?根据 OOP 方法是正确的吗?
    • @KanishkDudeja:是的。 User 对象的工作几乎从来不是将自己保存到永久存储(数据库)中。两者之间几乎总是有区别的。
    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2020-06-28
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多