正确定义类成员

时间:2012-05-31 08:14:30

标签: php oop function

我是编程特别是OOP的新手,我想知道如何正确编写这种函数?

有最好的做法吗?也许这取决于代码的可读性,但我不知道哪个更好?我个人更喜欢第三个,但我想学习“正确”的方式......

// Version #1
public function getUser( $id )
{
    $sql = "SELECT * FROM users WHERE id=$id";
    $user = $this->database->query($sql);
    return $user;
}

// Version #2    
public function getUser( $id )
{
    $user = $this->database->query("SELECT * FROM users WHERE id=$id");
    return $user;
}

// Version #3    
public function getUser( $id )
{
    return $this->database->query("SELECT * FROM users WHERE id=$id");
}

2 个答案:

答案 0 :(得分:3)

所有这些都是错误的,因为你没有清理$id,如果它是一个int,你的函数的第一行应该是:

$id = (int) $id;

如果它应该是其他任何东西:

$id = $this->database->whateveryourescapefunctioniscalled($id);

现在,问你真正的问题。 1和2的优点是,如果您的数据库函数返回的不是用户(某些函数在失败时返回false),您可以通过某种方式在此函数中处理它。在#3中,无论何时拨打getUser,都必须处理它。这将变成一团糟。如果你的查询变得更长(需要连接等),你可能会想要更像1的东西,但在那之前,2可以。如果你不关心或者不需要在这里处理失败的查询案例,即使是3也没关系。

答案 1 :(得分:-1)

基于这三个例子,就OOP而言,没有太多可说的。您应该了解CLASS的IDEA是什么。课程围绕一个核心概念,或想法或主题。然后,类字段是描述该主题的那些属性。例如,如果您有一个表示坐标系中某个点的类,则x和y坐标的属性是该类的自然属性。我想说的是,面向对象是基于某些原则(许多人似乎都错过了)。它不是用两行代码写一些代码。