Php 在类似CMS的应用程序中,单例模式不可避免吗?
在CMS应用程序中,如WordPress,CMS只加载插件,然后插件从CMS请求其依赖项(如数据库、配置等),CMS的作用类似于注册表 我还没有见过用PHP编写的CMS应用程序不使用这种模式(或反模式)。它们都以某种方式使用注册表,例如:Php 在类似CMS的应用程序中,单例模式不可避免吗?,php,content-management-system,singleton,dependency-management,Php,Content Management System,Singleton,Dependency Management,在CMS应用程序中,如WordPress,CMS只加载插件,然后插件从CMS请求其依赖项(如数据库、配置等),CMS的作用类似于注册表 我还没有见过用PHP编写的CMS应用程序不使用这种模式(或反模式)。它们都以某种方式使用注册表,例如: craft()->request->getPost('id') (craft) 或 或 或 因此,单例模式对于这种类型的应用程序来说是不可避免的,这样说对吗 因此,对于这种类型的应用程序,单例模式是不可避免的,对吗 我不能说这是直截了当的。 S
craft()->request->getPost('id') (craft)
或
或
或
因此,单例模式对于这种类型的应用程序来说是不可避免的,这样说对吗
因此,对于这种类型的应用程序,单例模式是不可避免的,对吗
我不能说这是直截了当的。
Singleton是一种设计模式,而不是需求。
事实上,大多数开发人员都是在不知情的情况下实现设计模式的。
我敢打赌,如果有人真的很努力,他会找到一种完全避免单身的方法。
我不知道这是为什么困扰你。但这是我能提供的最好答案 很多(可能全部?)内容管理系统都使用这种面向对象的php编程,因为它是最干净、最好的编码方式。当然可以避免这种情况,但代码不再是结构化的
如果你觉得奇怪,你应该学习如何使用它,你会发现这是一个非常干净的编码方式
更多信息可在此处找到:
在这里:
您可以使用依赖项注入来避免单例。这通常与工厂一起创建对象。我知道,只是没有cms使用di,我想知道这样做的原因是否是因为cmsI的性质不可能,除了一些cms应用使用di之外。如果你想知道为什么WordPress没有,也许可以问问核心开发者?
global $wpdb;
$wpdb->insert($table, $data); (wp)
$db = Database::getConnection(); (drupal)
$db = JFactory::getDbo(); (joomla)