我有这个User类
class User{
private $logged = false;
private $id;
public function User() {
//> Check if the user is logged in with a cookie-database and set $logged=true;
}
public function isLogged() {}
public function editPerms() {}
//> other methods
}
Run Code Online (Sandbox Code Playgroud)
那么现在考虑我不能记录超过1个用户(当然因为我们正在讨论单个http请求)我应该在哪里存储我的参考费用?
这就是单身人士有用的情况,但现在每个人都说单身人士是邪恶的(就像静态方法一样).
我可以做到$GLOBALS['currentUser'] = new User();
并且可以随处访问,但我认为这比单身人士更糟糕.
那我该怎么办?
请注意,我不需要在请求之间保存此实例.我只需要一种方法在同一个请求中访问我的框架中的这个实例.
如果你想知道我现在所做的所有Helper对象是一个服务容器(这被认为是坏的):
function app($class) { //> Sample
static $refs = array();
if (!isset($refs[$class]))
$refs[$class] = new $class();
return $refs[$class];
}
//> usage app('User')->methods();
Run Code Online (Sandbox Code Playgroud)
(IE是什么symfony)
模式应该是一个有用的指南,就像以前成功的软件抽象库.如今,人们常常将模式视为某种宗教,无论程序的背景如何,事物都是"正确"或"错误".
想想你想要实现的目标,并以对你有意义的方式进行映射.在这种模式与该模式之间存在细微差别,并且忽略了这一点,并且它不会让您的程序得以编写.边做边学!
HTH.
归档时间: |
|
查看次数: |
552 次 |
最近记录: |