Допустим, у меня есть три класса:PHP OO Войти и Регистрация
User.php
Password.php
Database.php
В интересах обучения больше ООП, у меня есть некоторые, надеюсь, просто ответить на вопросы. К сожалению, я до сих пор не понимаю.
Есть несколько вещей, которые я хочу выполнить. От начала до дна:
- Подключение к базе данных
- Grab пароль доступа пользователей на основе публикуемую пользователя
- Проверьте хэш пароля отправленного пароль
- Войдите пользователь в систему и перенаправить их на определенная страница
методы, которые я хочу использовать:
хэширования пароля (когда пользователь REGIST ERS):
public function hash($password)
{
return password_hash($password, PASSWORD_BCRYPT);
}
Схватив зашифрованный пароль из базы данных:
public function hashFromDatabase($username)
{
$stmt = $this->mysqli->db->prepare("SELECT password FROM users where username = :username");
$stmt->execute(array(':username' => $username));
$row = $stmt->fetch();
return $row->password;
}
Проверка пароля (когда пользователь входит в систему):
public function verify($password, $hash)
{
if (!password_verify($password, $hash)) {
return false;
}
return true;
}
Прямо сейчас, что у меня есть, следующие, исключительно для целей тестирования, в index.php:
require 'vendor/autoload.php';
use App\User;
$user = new User;
$user->setUsername('username');
$user->setPassword('password');
echo $user->login();
setUsername и SetPassword простые сеттеры:
public function setPassword($password)
{
$this->password = $password;
}
public function setUsername($username)
{
$this->username = $username;
}
И $user->login();
следующий:
public function login()
{
$hash = $this->pass->hashFromDatabase($this->username);
$test = $this->pass->verify($this->password, $hash);
if($test)
{
return "YES";
}
return "NO";
}
$this->pass
это из __construct:
public function __construct()
{
$database = new Database;
$password = new Password;
$this->mysqli = $database;
$this->pass = $password;
}
Теперь, мой главный вопрос. Я знаю, что некоторые из моих методов, вероятно, не самые лучшие сейчас, но это не то, что я фокусирую. Я хотел бы знать, в интересах ОО, куда поставить эти методы. Должен ли я просто поместить все данные, связанные с базой данных, в мой Database.php
? Или я должен положить метод hashFromDatabase
в моем Password.php
? Или это может быть сделано просто так?
И должен ли я использовать три класса, которые я указал в верхней части? Или я должен просто использовать класс Auth
вместо User
и Password
? Или это просто вопрос вкуса?
И, конечно, если вы собираетесь ответить, пожалуйста, объясните, почему :) Большое спасибо за любой совет!
Спасибо, я действительно получил много опыта с Laravel, но Мне все еще трудно понять, куда положить хаха. И в интересах лучше понять это, я начал писать что-то с нуля, но я не хотел идти в сторону многоуровневого приложения, по крайней мере, на самом деле. Но я думаю, что я буду использовать свой опыт laravel, чтобы понять это и попытаться понять его более четко. Благодаря :) – Hardist