2015-03-25 2 views
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; 
    } 
} 

ответ

0

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

С точки зрения $var против $_var:

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

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

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

Смежные вопросы