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

PHP中的注册表或单例模式?

发布时间:2020-12-13 13:13:31 所属栏目:PHP教程 来源:网络整理
导读:我现在正在使用 PHP类和对象.在这个问题上,字段和方法的名称只是为了让我们了解我在说什么. 它与使用单例和注册表设计模式有关. 现在让我说,我需要访问一个Database对象,Cache对象,Core Settings对象,Session对象几乎在其他所有类中,我将需要访问这些对象.所
我现在正在使用 PHP类和对象.在这个问题上,字段和方法的名称只是为了让我们了解我在说什么.

它与使用单例和注册表设计模式有关.

现在让我说,我需要访问一个Database对象,Cache对象,Core Settings对象,Session对象几乎在其他所有类中,我将需要访问这些对象.所以我会使用注册表将所有4个对象存储到1个注册表类对象中.然后我可以将我的1个对象传入任何需要访问的对象.所以这听起来很棒,但是如果我有一些类不需要所有这些对象,如果我只需要访问数据库对象或其他类中的Session对象?为了实现,最好只是在这些其他对象中使用单例,或者在这些对象中使??用我的注册表是一样的?

我不清楚这些对象如何在PHP中工作,以了解是否有任何类型的执行增益(更少的内存使用率,CPU使用率,加载时间).

所以任何有经验的人都可以告诉我,如果使用一个或另一个有任何收益,我在舞台上,我可以去以太方式,而不影响生产时间或任何东西.如果我现在可以使用最好的方法.

这取决于你的应用程序.如果您仍然需要4个课程中的3个课程,那么使用注册表而不是仅仅因为您不需要第四个课程而独立处理3将更为理想.懒惰加载类将是减少内存占用的一种方法,但是当您创建对象时,您需要指示注册表,这与处理单例并没有太大的不同.或者,您可以创建一个n参数构造函数或使用数组来指导您的Registry在构建过程中实例化哪些类.
class Registry {
    public $class1;
    public $class2;

    function __construct($uses) {
        foreach($uses as $class) {
            $this->{$class} = new {$class}();
        }
    }

}

然后通过指定要实例化的类来实例化您的注册表.

$reg = new Registry(array('class1'));

您显然希望您的构造函数处理零参数以默认实例化所有类.

(编辑:李大同)

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

    推荐文章
      热点阅读