在我的网站上,我希望允许用户使用来宾帐户查看某些功能.来宾帐户会看到许多与普通用户相同的信息,但某些方面会受到限制.
从编程的角度来看,对这个问题有什么好的方法?
>我将用户通常需要的确切页面粘贴到不同的.PHP文件中,例如:guestProfile.PHP.然后,我手动删除访客看到的按钮或信息.
>我对自己的视图添加了很多检查,例如:
if(userIsGuest)
// then hide info.
在软件工程方面,最合乎逻辑的是什么?请尝试量化您的答案,而不要使用观点.
解决方法:
抽象是你的朋友.不要将条件填充到视图中,而应将希望包含在输出中的任何子视图传递给视图.您的视图不需要知道这些子视图的内部工作原理,并且可以根据用户是普通用户还是来宾用户将其交换出来.
这是一个简单的例子:
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);
}
}