Я сейчас изучаю и пишу коды на PHP с подходом ООП.Я на правильном пути?Постараюсь использовать систему MVC, когда я привык к такому подходу.Можете ли вы сказать мне, что мне нужно улучшить или что читать как статьи, документацию или руководства при использовании подхода MVC?Спасибо!
database.class.php
<?php
class Database
{
private $db;
private $cfg;
public function __construct()
{
$this->cfg = include('conf/config.php');
try{
$this->db = new PDO("mysql:host=" . $this->cfg['host']
. ";dbname=" . $this->cfg['dbname'],
$this->cfg['username'],
$this->cfg['password'],
array(
PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION
)
);
}
catch(PDOEsception $e)
{
echo $e->getMessage();
}
}
public function getConnection()
{
return $this->db;
}
}
?>
config.php
<?php
return [
'host' => 'localhost',
'dbname' => 'test',
'username' => 'root',
'password' => ''
];
?>
user.service.php
<?php
require_once('class/database.class.php');
class UserService
{
private $dbh;
private $db;
private $username;
private $password;
private $_user;
public function __construct($username, $password)
{
$this->dbh = new Database();
$this->db = $this->dbh->getConnection();
$this->username = $username;
$this->password = $password;
}
public function login()
{
try
{
$user = $this->checkInformation();
if ($user) {
$this->_user = $user;
return $user;
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function checkInformation()
{
try
{
$checkUsername = $this->db->prepare('SELECT * FROM users WHERE uname = :uname');
$checkUsername->execute(
[
':uname' => $this->username
]
);
if ($checkUsername->rowCount() > 0) {
$userData = $checkUsername->fetch(PDO::FETCH_ASSOC);
$hashedpwd = $userData['pwd'];
$verify = password_verify($this->password, $hashedpwd);
if ($verify) {
return $userData;
}
}
return false;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
?>