我想創建一個用戶登錄系統。MVC關係和DRY
我有一個名爲AccessControl的類/控制器,其中包括用於創建,刪除和記錄用戶的所有功能。
我也有一個叫做Users的模型,它具有從AccessControl類調用的所有數據庫函數。
我AccessControl的類:
include_once('../models/User.php') ;
class AccessControl {
private $_systemKey ;
public function __construct()
{
$this->_systemKey = 'QA>8fg)@z#t#:E60mj&MzHsm-lUj&b-}R%~<y$|nAuF)C3!r%+rT"Q<r$o?{_XR' ;
}
public function createUser($email, $password, $level)
{
$user_salt = $this->randomString() ;
$password = $user_salt . $password ;
$password = $this->hashData($password) ;
if(!is_int($level))
{
return false ;
}
//Create verification code
$code = $this->randomString() ;
//SQL...
$created = User->insertNewUser($email, $password, $level) ;
if($created != false){
return true;
}
return false ;
}
}
而且在我的模型:
class User extends Core {
public function fetchSalt($username)
{
$result = $this->db->prepare("SELECT saltword FROM users WHERE username = ?") ;
$result->execute(array($username)) ;
return $result->fetchColumn() ;
}
public function insertNewUser($email, $password, $level)
{
//SQL Insert...
}
}
我不知道如果我這樣做了正確的方式,因爲不是的createUser和insertNewUser相同?我該如何改變一下東西才能使它變幹?
核心只是我的PDO連接類,我所有的模型將從它延伸。無論如何,這是計劃。
abstract class Core {
protected $db ;
function __construct()
{
try{
$this->db = new PDO("mysql:host=localhost;dbname=database", "user", "pass") ;
$this->db->exec('set names utf8') ;
$this->db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$this->db->setAttribute(PDO::ATTR_PERSISTENT, TRUE) ;
}
catch(PDOEXCEPTION $e)
{
echo 'Database error: <i style="color:#993300;">'.$e.'</i>' ;
die() ;
}
}
function __destruct()
{
$this->db = NULL ;
}
}
一般不會擴展一些'Core'或者God類。 – PeeHaa
我認爲這應該是codereview。 – Leri
@PeeHaa請告訴Magento開發者。 – feeela