通过PHP在OOPS中执行CRUD操作的理想方式

时间:2014-02-25 09:37:17

标签: php oop crud

我刚开始使用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。

这是正确的方法吗?

1 个答案:

答案 0 :(得分:2)

这取决于。您是否计划与该用户一起做任何事情? (除了显示它)?

如果不这样做,请转到 Table Data Gateway 模式。如果您确实涉及用户的某种逻辑,请转到 Data Mapper 模式。

主要区别在于使用表数据网关,重点是表(每个表一个网关对象,允许您对该表执行操作)。但是,使用Data Mapper时,重点是域对象(即User对象),每个域类通常有一个映射器类。 (即UserUserMapper)。