【发布时间】:2012-02-08 03:05:22
【问题描述】:
如果您使用 mvc 来构建用户配置文件,最好使用条件语句来计算模型或控制器中的函数内的 cmets 的显示类型,如下所示:
例如 我有 3 节课
- 评论
- 会员
- 管理员(扩展成员)
一些例子使用了缺少函数的伪代码
选项 1
依赖于登录 showComments 函数返回 cmets 的用户类型将返回不同的信息。
class user {
function isLoggedIn() { //Check if a user is logged in }
function getUserType() { // return user type }
function showComments($id) { //comments code }
}
class admin extends user {
function showComments($id) { //comments code }
}
然后使用控制器内的代码来确定取决于登录的用户类型显示哪个?
$profileContent = $user->getOtherContent();
if ($user->isLoggedIn() && $user->getUserType() == "member") {
$member = new member();
$comments = $member->showComments($profileId);
}
elseif ($user->isLoggedIn() && $user->getUserType() == "admin") {
$admin = new admin();
$comments = $admin->showComments($profileId);
}
else
$comments = $user->showComments($profileId);
require 'templates/profile.php';
选项 2
由于这是一个自定义框架,我可以将所有内容移动到模型中的一个函数中,并在用户中有一个函数来检查要显示的评论类型:
abstract class user {
function isLoggedIn() { //Check if a user is logged in }
function getUserType() { // return user type }
}
class profile {
function showComments($profileId, $user) {
if (User::isLoggedIn() && User::getUserType() == "member") {
$comments = //database query and formatting for member
}
elseif (User::isLoggedIn() && User::getUserType() == "admin") {
$comments = //database query and formatting for admin
}
else
$comments = //database query and formatting for guest
return $comments;
}
}
使用如下控制器:
$profile = new profile($profileId);
$comments = $profile->showComments();
require 'templates/profile.php';
【问题讨论】:
-
您使用的是特定框架吗?你提到你有一个模型和控制器,但是视图呢?
-
哎呀我错过了那部分,在控制器中的 if/else 之后需要视图。 cmets 以
$comments的形式传递给它 -
对于你的要求没有规则,所以尽你所能。
-
嗨@Silver89!问题在于根据用户类型显示 cmets 视图的代码,还是用于从数据库为每种用户类型获取数据的代码?
标签: php oop model-view-controller class