在控制器(Controller)或模型(Model)中存储变量的最佳实践是什么? 例如,在脚本执行时,它会从会话中获取用户ID并获取用户类型,如超级管理员,管理员,服务代表,销售代表。我们还会检查用户ID所属的帐户,并获取该帐户的所有设置。
我的问题是,这些值应该存储在控制器(Controller)还是模型(Model)中?
提前致谢。
在控制器(Controller)或模型(Model)中存储变量的最佳实践是什么? 例如,在脚本执行时,它会从会话中获取用户ID并获取用户类型,如超级管理员,管理员,服务代表,销售代表。我们还会检查用户ID所属的帐户,并获取该帐户的所有设置。
我的问题是,这些值应该存储在控制器(Controller)还是模型(Model)中?
提前致谢。
class Model{
...
static function login($username, $password){
$result = Model::getUser($username, $password);
if(empty($result)){
return false;
}
else
{
$_SESSION['userid'] = $result['id'];
// Assign other information you think you'll need in the session here
}
}
static function loggedIn(){
if(isset($_SESSION['userid']){
return true;
}
else
{
return false;
}
}
static function getAttribute($attr){
return $_SESSION[$attr];
}
...
}
class Controller{
function someFxn(){
$userInfo = Model::getAttribute('someAttr');
}
}
你将它们存储在模型中(从数据库中获取),通过控制器来提取它们(在页面加载时),并在视图中显示它们的结果(在需要时调用控制器类)。
这是MVC的基本理论...
祝你好运!
我会给你一个简单的汽车对象销售的例子... 这个例子很糟糕,但你可以从中了解MVC的工作原理...
<?
// Data
class Car
{
private $_color;
public function setColor($newC)
{
$this->_color = $newC;
}
public function getColor()
{
return $this->_color;
}
private $_maxSpeed
public function setMaxSpeed($newMS)
{
$this->_maxSpeed = $newMS;
}
public function getMaxSpeed()
{
return $this->maxSpeed;
}
}
// Example
$car = new Car();
$car->setColor($dbInfo['color']);
$car->setMaxSpeed($dbInfo['maxSpeed']);
// Controller
class Sales
{
. . .
public function SaleCar(Costumer $costumer, Car $car, $quantity)
{
if($car->getColor() == "red") // Red is expensive color...
$car->MultiplyPriceBy(1.5); // Just an example...
else
$car->SubsetQuantityBy($quantity); // The car has quantity propery as well... and so on...
$costumer->setPaymentType("Credit-card");
. . .
$costumer->Pay($quantity * $car->getPrice());
return $finalPrice; // $quantity * $car->getPrice()
}
. . .
}
// View
class SalesPanel
{
. . .
public function output()
{
foreach($this->cars as $car)
{
if(in_array($car->getID(), $_POST['car_id']))
Sales->SaleCar(Costumer::GetCostumerFromID($_SESSION['uid']), $car, $_POST['quanityty']);
}
$output = . . .
$output .= "Car model GHi675 old by . . . "; // Get info from controller
}
. . .
}
?>