Это мой первый код с использованием 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;
}
}
Вам не нужно использовать real_escape_string()
с подготовленными операторами, так как они автоматически выходят за вас по мере необходимости.
В терминах $var
против $_var
:
Это, по сути, просто другое соглашение об именах. В верхней части файла вы определяете некоторые частные переменные:
private $_id;
private $_name;
private $_mail;
private $_login;
private $_pass;
private $_conn;
Они используют $_var
. Это поможет вам отделить их от ваших общедоступных переменных $var
в вашем коде. Имеет ли это смысл?