类成员的正确定义


Correct definition of Class Members

我对编程,尤其是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");
}

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

$id = (int) $id;

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

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

现在,对于您的真正问题。 1 和 2 的优点是,如果您的数据库函数返回用户以外的内容(某些函数在失败时返回 false),则您有某种方法在此函数中处理它。在#3中,您必须在任何地方处理它 getUser .这将变成一团糟。如果你的查询变得更长(需要连接等),你可能想要更像 1 的东西,但在那之前,2 很好。如果您不关心或不需要在此处处理失败的查询情况,即使 3 也可以。

基于这三个例子,在OOP方面没有太多可说的。你应该明白CLASS的想法是什么。课程围绕一个中心概念、想法或主题展开。然后,类字段是描述该主题的属性。例如,如果有一个表示坐标系中点的类,则 x 和 y 坐标的属性是该类的自然属性。我想说的是,面向对象是基于某些原则(许多人似乎忽略了这些原则)。它不是在两行而不是一行中编写一些代码。

相关文章: