在PHP中显示用户数据的最佳实践

时间:2014-06-27 21:06:00

标签: php

这是我获取用户数据的USER课程。

require_once "classes/DB.php";

class USER {

    private $session_user_id = 1;
    //$session_user_id = $_SESSION["user_id"];

    private $user_data;
    public $username;
    public $first_name;
    public $last_name;
    public $profile_photo;

    private static $instance = null;

    //kthen objekt.
    private function __construct() {
        $db = DB::get_instance();
        $query = "SELECT * FROM `users` WHERE `user_id` = $this->session_user_id";
        $run_query = $db->mysqli->query($query);
        $this->user_data = $run_query->fetch_assoc();

        $this->username = $this->user_data["username"];
        $this->first_name = $this->user_data["first_name"];
        $this->last_name = $this->user_data["last_name"];
        $this->profile_photo = $this->user_data["profile"];
    }

    public static function get_instance() {
        if(!isset(self::$instance))
            self::$instance = new self;

        return self::$instance;
    }

        public function first_name() {
        return $this->first_name;
    }

}

$user = USER::get_instance();

有人可以告诉我使用properties这样的公共get_name();方法制作私有echo $user->get_last_name()以及获取内容的最佳方法是什么?

或只是回显属性内容? echo $user->last_name

额外的问题:如何在类中使用$_SESSION变量?我应该将它作为函数参数传递吗?

1 个答案:

答案 0 :(得分:1)

首先,您应该查看$_SESSION问题的流行框架设计。

在我看来,最好将getter和setter方法用于面向对象的方法。因为与从类中直接调用变量相比,这些变量无法从外部修改。此外,您可以使用受保护的变量比私有更好。

您可以从Stack Overflow中阅读以下主题:

Why use getters and setters?

What is the point of getters and setters?