在我的网站中,我希望允许用户使用来宾帐户查看某些功能。来宾帐户会看到与普通用户相同的信息,但有些事情会受到限制。
对于这个问题,编程明智的方法是什么?
我将用户通常拥有的确切页面复制粘贴到不同的.php文件中,例如:guestProfile.php
。然后我手动删除客人看到的按钮或信息。
我在我的观点上添加了一堆检查,例如:
if(userIsGuest)
// then hide info.
另一种解决方案。
在软件工程方面最具逻辑意义的是什么?请尝试量化您的答案,而不是使用意见。
答案 0 :(得分:3)
抽象是你的朋友。您应该将您希望包含在输出中的任何子视图传递给您的视图,而不是使用条件填充视图。您的视图不需要知道这些子视图的内部工作方式,您可以根据用户是普通用户还是访客用户来交换它们。
这是一个简单的例子:
class View {
/** Does some view stuff... */
public function addSubview($name, Subview $subview) {
//store subviews to be used in the template
}
}
/**
* Somewhere in a controller far far away...
*/
class GuestController extends Controller {
/** Does some controllery stuff... */
public function exec() {
//..
//prepare the view
$this->view->addSubview('toolbar', $guestToolbarSubview);
}
}
答案 1 :(得分:0)
在这种情况下,最好进行检查(解决方案2)。这适用于DRY(不要重复自己)原则。它可以减少代码冗余,并且不太可能忘记将更改复制到第二版代码中。
答案 2 :(得分:0)
尝试将公共代码保存在单独的php文件中,并在需要的地方包含该文件。