Как оптимизировать мой класс пользователя

0

Это мой первый код с использованием php5, и мне нужна ваша помощь для оптимизации моего пользователя класса, и я хочу знать:

  • Какая функция может заменить real_escape_string?
  • В чем разница между $var и $_var (потому что я использовал оба, но я не знаю, в чем разница)?

Код, который у меня есть сейчас:

class user {
    private $_id;
    private $_name;
    private $_mail;
    private $_login;
    private $_pass;
    private $_conn;
    public
    function __construct($conn) {
        $this - > conn = $conn;
    }
    // function : add user
    public
    function addUser($name, $mail, $login, $pass) {
        $conn = $this - > conn;
        $this - > name = $conn - > quote($name);
        $this - > login = $conn - > quote($login);
        $this - > mail = $conn - > quote($mail);
        $this - > pass = password_hash($pass, PASSWORD_DEFAULT);
        $sql = "INSERT INTO user(name, mail, login, pass) VALUES(?,?,?,?)";
        $st = $conn - > prepare($sql);
        $st - > execute([
            $this - > name,
            $this - > mail,
            $this - > login,
            $this - > pass,
        ]);
    }
    // Get User
    public
    function login($login, $pass) {
        $conn = $this - > conn;
        $login = $conn - > quote($login);
        $pass = password_hash($pass, PASSWORD_DEFAULT);
        $sql = "SELECT * FROM user WHERE login=? AND pass=?";
        $st = $conn - > prepare($sql);
        $st - > execute([
            $login,
            $pass,
        ]);
    }
    //function : delete user
    public
    function deleteUser() {
        $conn = $this - > conn;
        $sql = "DELETE FROM user WHERE id=".$this - > id;
        $conn - > exec($sql);
    }
    // Getters and Setters
    public
    function __get($property) {
        if (property_exists($this, $property)) {
            return $this - > $property;
        }
    }
    public
    function __set($property, $value) {
        if (property_exists($this, $property)) {
            $this - > $property = $value;
            $conn = $this - > conn;
            $value = $conn - > quote($value);
            $sql = "UPDATE user SET ".$property.
            "=? WHERE id=?";
            $st = $conn - > prepare($sql);
            $st - > execute([
                $value,
                $this - > id,
            ]);
        }
        return $this;
    }
}
Теги:
class

1 ответ

0

Вам не нужно использовать real_escape_string() с подготовленными операторами, так как они автоматически выходят за вас по мере необходимости.

В терминах $var против $_var:

Это, по сути, просто другое соглашение об именах. В верхней части файла вы определяете некоторые частные переменные:

private $_id;
private $_name;
private $_mail;
private $_login;
private $_pass;
private $_conn;

Они используют $_var. Это поможет вам отделить их от ваших общедоступных переменных $var в вашем коде. Имеет ли это смысл?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню