加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 我应该将哪种模式用于我的User类的唯一实例?

发布时间:2020-12-13 22:08:31 所属栏目:PHP教程 来源:网络整理
导读:我有这个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() {} // othe
我有这个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    
}

那么现在考虑我不能记录超过1个用户(当然因为我们正在谈论单个http请求)我应该在哪里存储我的参考费用?

这就是单身人士有用的情况,但现在每个人都说单身人士是邪恶的(就像静态方法一样).

> http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/
> http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/

我可以做一个$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();

(IE是什么symfony does)

解决方法

模式应该是一个有用的指南,就像以前成功的软件抽象库.如今,人们常常将模式视为某种宗教,无论程序的背景如何,事物都是“正确”或“错误”.

想想你想要实现的目标,并以对你有意义的方式进行映射.在这种模式与该模式之间存在细微差别,并且忽略了这一点,并且它不会让您的程序得以编写.通过实践学习!

HTH.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读