jjzjj

Singleton

全部标签

php - (PHP) 单例数据库类 - 静态方法呢?

这是一个基本的网站。根据此处的答案,我正在这样做:private$db;publicfunction__construct($id=null){$this->db=Db::getInstance();//singletonfromtheDbclass但是如果有静态方法,我就不能使用对象特定的变量。有什么比在静态方法中手动指定db变量更好的方法了吗?publicstaticfunctionsomeFunction($theID){$db=Db::getInstance();编辑:将变量设为静态并不能解决问题。访问未声明的静态属性。我仍然必须在静态函数中分配变量。问题是询问是否有办法解决这

php - PHP 中的单例模式....如何在请求之间保存状态

通过使用静态变量和单例模式,我认为创建一个简单的购物车就足够容易了,它可以在加载另一个页面时记住购物车中的元素。我遇到了一个问题,即刷新页面时购物车不记得其中已有的内容。我下面的代码有问题吗,还是我应该只使用全局变量或mysql数据库。存储状态的最佳方式是什么.._shoppingCartItems[]=$item;}publicfunctioncartCount(){returncount($this->_shoppingCartItems);}}?>实现$item=newshoppingItem();$shoppingCart=shoppingCart::getInstance()

php - PHP静态类和单例类之间的确切区别是什么

我一直在PHP中为注册表对象使用单例类。对于所有Singleton类,我认为主要方法如下所示:classregistry{publicstaticfunctionsingleton(){if(!isset(self::$instance)){self::$instance=newregistry();}returnself::$instance;}publicfunctiondoSomething(){echo'something';}}所以每当我需要注册表类的东西时,我都会使用这样的函数:registry::singleton()->doSomethine();现在我不明白只创建一个

php - 在 OO PHP 中加载实例的有用性?

我被要求用PHP做一个项目并确保它是面向对象的。我做过OO,也做过PHP,但从来没有两者都做过。OOPHP(继承/多态性之外)的主要好处似乎是代码组织。没关系;我正在这样做。但是我遇到困难的地方是我是否真的应该为每个“对象”创建实例。对我来说(也许我在这里太天真了),网络应用程序就是发出非常短的、无状态的请求来更改或检索数据库中的记录。对象不能在请求之间持续存在。因此,从数据库加载数据、从该数据构造对象、进行小更新、将对象中的数据保存回数据库,然后丢弃对象感觉毫无意义。加载/保存代码似乎白做了很多工作。[澄清:浪费开发时间,而不是处理时间……不太关心开销]另一种方法是拥有一堆单例(或具

php - php中的单例模式

classSingleTon{privatestatic$instance;privatefunction__construct(){}publicfunctiongetInstance(){if($instance===null){$instance=newSingleTon();}return$instance;}}以上代码描述了本文中的单例模式。http://www.hiteshagrawal.com/php/singleton-class-in-php-5有一件事我没看懂。我在我的项目中加载了这个类,但是我最初如何创建一个Singleton对象。我会这样调用吗Singelton

php - 为什么每次运行调用 Foo::getInstance() 的脚本时,PHP 都会创建一个新的单例实例?

我一直怀疑PHP单例不是真正的单例,所以我做了一个测试。我创建了以下类:classMySingleton{privatestatic$instance;privatefunction__construct(){error_log("IamanewinstanceofMySingleton.Iwasinstantiatedat".time());}privatefunction__clone(){}publicstaticfunctiongetInstance(){if(!is_object(self::$instance)){self::$instance=newMySingleton

php - Magento 无法检测客户是否登录

这是我使用ajax函数调用调用的php文件。为了测试目的,我也试过直接调用它。include"/srv/www/htdocs/magento/app/Mage.php";Mage::init();if(Mage::getSingleton('customer/session')->isLoggedIn()){echo'LoggedIn';}else{echo'NotLoggedIn';}代码没有给出任何错误。我检查了apache错误日志。我使用的magento1.6.1版本无法检查用户是否登录。我试图在用户登录时以及用户未登录时执行此代码。但是此代码仅输出“Nog已登录”的else语句

php - 你能在使用依赖注入(inject)的同时避免大量的私有(private)变量吗?

我一直在阅读/观看很多推荐Material,最近是这个-MVCforadvancedPHPdevelopers.出现的一件事是单例是不好的,它们在类之间创建依赖关系,而依赖注入(inject)很好,因为它允许单元测试和解耦。在我编写程序之前,一切都很好。我们以网店的产品页面为例。首先我有我的页面:classPage{public$html;publicfunction__construct(){}publicfunctioncreatePage(){//dosomethingtogeneratethepage}publicfunctionshowPage(){echo$this->ht

php - 单例和服务定位器的真正替代品?

我正在努力提高我的编程技能,但我遇到了一个令人沮丧的问题,最好用一个例子来解释这个问题:假设我正在用PHP创建一个microCMS。这个microCMS有一个Router类,负责路由。它还包含URI和从中提取的额外参数。classRouter{private$uri;private$params;...publicfunctiongetRoute(){...}...publicfunctiongetParams(){return$this->params;}...}我还有一个前端Controller,我正在向其传递一个新的Router()对象。到目前为止一切顺利,我可以访问前端Cont

php - 库作为 Codeigniter 中的单例?

我使用单例模式创建了一个自定义库。为什么要这样?因为我需要能够在没有$this->引用的情况下调用我的函数,例如,我可以执行以下代码:functionfoo(){MyLibrary::instance()->foo();}然后我可以像这样在Controller中调用我的函数:functionfoo();代替$this->mylibrary->foo();我有麻烦了,因为CodeIgniter试图在最佳方法是“读取”静态实例时实例化我的库。为什么我需要这样做?我的自定义库必须从位于应用程序文件夹外的/plugins目录中的外部php文件注册“Hook”。看:/申请/插件/plugins/