php - 在 PHP 中使用 OOP 从查询中检索数据

标签 php mysql sql oop

我有一个页面,用于检索用户数据并在页面上显示该数据。我的代码工作得很好,但我无法理解何时使用 OOP 进行 Web 开发。我当前的页面非常简单,我的理解是OOP在创建对象时消耗了大量的处理能力。像这样的简单页面需要使用 OOP 吗?

<?php
    session_start();
    require $_SERVER['DOCUMENT_ROOT'] . "/connection.php";
    if ($_SESSION["id"] != ""){
        $result = $db->query("
            SELECT `Username`, `Image`, `FirstName`, `LastName`, `Type`
            FROM Users WHERE `id` = '{$_SESSION['id']}'
        ");
        if ($result->num_rows == 0){
            $switch = false;
        } else {
            $resultSet = $result->fetch_array();
            $avatar = $resultSet["Image"];
            $account_type = $resultSet["Type"];
            $username = $resultSet["Username"];
            $fName = $resultSet["FirstName"];
            $lName = $resultSet["LastName"];
            $id = $_SESSION["id"];
            $switch = true;
        }
    }
?>

然后,信息将显示在 HTML 中。例如,当我想显示名称时,我只需回显它即可。像这样echo "<p>$fName</p>";这种方法是否应该改为面向对象的方法?或者我的设计是否合适?

最佳答案

我想您可能会说,一旦您的代码变得更大,OOP 就会变得更加可取,但是从 OOP 开始始终是可扩展性和易于理解代码的一个不错的选择。

你所拥有的基本上是一个文件,其中包含一个函数,如果你想检索与用户相关的其他内容,你可能会创建另一个文件,其中包含另一个函数,调用类似的东西。你可能会得到这样的东西:

class User {
    private $id;
    private $username;
    private $firstName;
    private $lastName;
    private $type;
    private $image;

    function __construct($id) {
        // TODO SQL stuff

        $this->id = $id;
        $this->username = // blahblah
    }
}

它可以具有各种函数(称为类中的方法),并且它们都将隐藏在单独的 User 类中。当你或其他人向项目编写代码时,他们不需要知道 User 的内部代码,他们只需要知道当 Y 放入你的方法时返回 X,他们的代码可以只是:

$user = new User($id);
return $user->doSomeMethod();

如果你想稍后获得用户的全名,你不需要创建一个单独的文件来执行相同的 SQL 操作,你只需将其添加到你的 User 类中(并添加一些注释它):

/**
*   Returns the proper case of the user's first and last names
*   @return String - full name of user
*/
public function getFullName() {
    return ucwords($this->firstName . " " . $this->lastName);
}

然后您可以在其余代码中对 User 对象调用 getFullName() 。您不希望与同一主题(用户)相关的代码片段分布在不同区域,这会使工作变得更加困难。

至于处理能力,我不太确定,但如果它有助于保持代码干燥(不要重复自己)并且易于理解,那么使用 OOP 是个好主意。

关于php - 在 PHP 中使用 OOP 从查询中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40952021/

相关文章:

php - WordPress 多站点单独页面

php - 让用户指定要搜索的mysql字段安全吗?

MySQL - 查询输出合并数据

mysql - SQL 添加不同表中出现的次数

sql - 如何增加每个非连续值的计数?

javascript - 在登录表单上显示错误消息

php - connect() 到 unix :/tmp/php-fpm. sock 失败(2:没有这样的文件或目录)

php - 转换 2010-04-16 16 :30:00 to "Tomorrow Afternoon"

左连接中的mysql搜索

mysql - select 语句将一个表中的列相乘,然后添加另一表中的列