jjzjj

php - 为什么在像Pimple这样的ioc容器中使用匿名函数

我知道在Pimple容器中,依赖项声明为$container=newPimple();$container['db']=function(){returnnewSomeClass;};我的问题是,如果我只是将依赖项声明为像这样的简单数组会怎样。$container=newPimple();$container['db']=newSomeClass;有什么区别? 最佳答案 不同之处在于所谓的lazyloading,具体来说lazyinitialization.在您的第一个示例中,SomeClass在被请求之前并未实际实例化。在您的第二

php - 传递参数给 Pimple->container->factory

所以我基本上想这样做:$this->container['Menu_builder']=$this->container->factory(function($c){returnnewMenu_builder($parameter_1,$parameter_2);});其中$parameter_1和$parameter_2从调用中传入,如下所示:$menu_builder=$this->container['Menu_builder']('account','reset_password');我知道上面的语法不正确,但我想将这些字符串传递到对$this->container->fact

PhpStorm 自动完成对 Pimple 管理的未知对象属性的支持?

我在Silex支持的应用程序中有以下代码:$uknownObj->unkownRef$uknownObj是一个依赖注入(inject)容器。我知道unkownRef是MyCoolObj的实例。现在我如何告诉IntelliJ/PhpStorm实际帮助我自动完成这个对象? 最佳答案 只需将unkownRef分配给一个变量并像这样提供注释。/**@varMyCoolObj$obj*/$obj=$uknownObj->unkownRef; 关于PhpStorm自动完成对Pimple管理的未知对象

php - 疙瘩和动态构造函数注入(inject)

我有一个关于Pimple和动态构造函数注入(inject)的问题。假设我有一个MVC框架,我想做一些类似图片上传的事情。这样做的半DI方式是这样的:classImageUploadController{publicfunctionupload(){$targetImage=newImage(1920,1080,75,'jpg','save/path');$imageSaver=newJPEGImageSaver($targetImage);$imageUploader=newImageUploader($imageSaver);$imageUploader->upload('myUpl

PHPStorm 自动完成数组键(动态插入)

我正在使用Pimple依赖注入(inject)器,每次我使用容器中的依赖项时,我都会忍不住仔细检查用于获取依赖项的key的拼写:$ioc=newPimple();//1.Definesomeobject$ioc["some-key"]=$ioc->share(function($c){/*...*/});//2.Useit$ioc["som...//Openconfigfileandcheckspelling...PHPStorm是否有某种方法可以查找这些属性并提供自动完成功能?我考虑过使用类似的东西定义所有这些键define('SOME_KEY','some-key');//...$

带工厂的 PHP 依赖注入(inject)容器

我正在使用silexphp/Pimple依赖注入(inject)容器(DIC),但不确定如何处理经典工厂模式。例子:父类Animal.php有两个子类,分别是DogAnimal.php和CatAnimal.php。子类的数量可以增长。在这种情况下,我想创建一个工厂来创建新的动物对象或动物类的子对象。Pimple允许为每个服务创建工厂方法。在使用PimpleDIC时,我认为我不想将每个子类(狗、猫等)添加为服务。特别是随着列表的增长。在我看来,这似乎是对DIC的误用,但也许我错了。我是否正确地假设我应该创建动物工厂服务并使用Pimple将依赖项注入(inject)工厂,而工厂又被用来创建

php - 疙瘩源码: Why to store object id and object itself in different arrays?

查看Pimplesourcecode我发现它将对象及其ID存储在两个不同的数组中:classContainerimplements\ArrayAccess{private$values=array();...private$keys=array();}然后:publicfunctionoffsetSet($id,$value){...$this->values[$id]=$value;$this->keys[$id]=true;}最后:publicfunctionoffsetGet($id){if(!isset($this->keys[$id])){thrownew\InvalidAr

php - 通过依赖注入(inject)传递静态类

如何通过依赖注入(inject)将静态类传递给对象?例如Carbon使用静态方法:$tomorrow=Carbon::now()->addDay();我有依赖于Carbon的服务,目前我在依赖项中使用库而不注入(inject)它们。但是,这增加了耦合,我想改为通过DI传递它。我有以下Controller:$container['App\Controllers\GroupController']=function($ci){returnnewApp\Controllers\GroupController($ci->Logger,$ci->GroupService,$ci->JWT);};

php - 认识疙瘩

我不明白这个“DI容器”是怎么用的。官方网站上显示的示例没有告诉我任何信息:http://pimple.sensiolabs.org基本上我有一个简单的站点,它由一组类组成:DB类、Cache类、User类和其他一些处理内容类型的类。所有这些类就像Pimple中提到的“服务”,每个服务都应该能够调用另一个服务。现在我正在一个主类中实例化服务,我像单例一样使用它来在其他类之间共享服务。根据我的阅读,Pimple正是做这类事情的,但我该如何使用它呢?:s 最佳答案 http://phpmaster.com/dependency-inje

php - 认识疙瘩

我不明白这个“DI容器”是怎么用的。官方网站上显示的示例没有告诉我任何信息:http://pimple.sensiolabs.org基本上我有一个简单的站点,它由一组类组成:DB类、Cache类、User类和其他一些处理内容类型的类。所有这些类就像Pimple中提到的“服务”,每个服务都应该能够调用另一个服务。现在我正在一个主类中实例化服务,我像单例一样使用它来在其他类之间共享服务。根据我的阅读,Pimple正是做这类事情的,但我该如何使用它呢?:s 最佳答案 http://phpmaster.com/dependency-inje
12