问题标签 [pimple]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
silex - Silex Pimple 服务实现
在我的 Silex 应用程序中,我需要一个基本上执行 file_get_contents() 的函数,我的想法是使用类似
这工作正常,但我怎样才能将参数传递给这个函数?我可以这样称呼它
但是向它传递参数仍然让我感到困惑
php - 在 Silex 应用程序中共享 3rd 方依赖项的最佳实践?
我刚刚开始一个新的 Silex 项目。我正在使用Cartalyst Sentry Authentication包,我希望注入到我的控制器服务控制器中。这是我尝试使用 Silex 的内置依赖容器,它扩展了 Pimple。我只是想要一些关于我是否以正确的方式做事以及我可以改进的反馈。
定义我的控制器:
这是我的控制器,请注意 app['sentry'] 可通过将其注入构造函数来供我的控制器使用。
php - PHP pimple cross dependency
I have two classes which depending on each other:
And I need to wrap them through Pimple like this:
But unfortunately I get cycling:
Is there any way to reach this cross-dependency without cycling? Or I can use only unidirectional dependencies?
php - 理解疙瘩php源码
Pimple 是一个简单的 php 依赖注入容器,用于 silex 框架。我在这里浏览了源代码。在文档中,该函数offsetGet
返回附加到依赖容器的类的相同实例。相关代码offsetGet
是:
在这里,如果对象在factories
Object Store( SplObjectStorage
type) 中,它会返回一个新的类实例,id 为 $id。然后在最后一次返回中再次$this->values[$id]
设置为对象的新实例并返回该新实例。
return $this->values[$id] = $this->values[$id]($this)
.
这是我无法理解的线。这条线应该如何为offsetGet
相同的 $id 的不同调用返回相同的实例。它不会每次都返回一个新实例吗?请帮我。我尝试了很多,但我不明白。
php - 疙瘩和动态构造函数注入
我有一个关于 Pimple 和动态构造函数注入的问题。
假设我有一个 MVC 框架,我想做一些像图片上传这样的事情。这样做的半 DI 方式是这样的:
基本上Image
是我要创建和保存的图像属性的简单容器。JPEGImageSaver
利用imagecreatefromjpeg()
、imagecopyresized()
、 和imagejpeg()
对象Image
的属性以及上传的临时图像的属性来保存上传图像的新安全版本。ImageUploader
接口JPEGImageSaver
以安全地存储上传的图像。
问题是我有三个与控制器紧密耦合的类,我试图避免这种情况的方法是使用 Pimple,然后将 Pimple 传递给控制器。
但是正如你所看到的,使用 Pimple 将依赖项注入我的控制器使使用它们比以前更加复杂。主要问题是我在 Pimple 中看不到在请求期间为对象设置构造函数值的方法,因此需要一堆Image
对象的设置器。
这个问题有一个通用的解决方案吗?我曾考虑将 Pimple 包装在一个解析容器中,让我传入构造函数参数,但问题是我的 IDE 不会指示应如何通过智能感知构造各种对象。$this->app['something']
我也有点怀疑我的控制器有多少可测试性。
控制器甚至需要可测试吗?如果是这样,我可以认为该Image
对象是一个值对象吗?
有什么想法吗?
php - 根据性能将用户分配到适当的联赛
我已经挂断了 php 中根据他们的表现将我的用户分配到“联盟”所需的逻辑。基本上,每月一次,我将运行一个 cron 作业,它将获取我的用户列表及其平均数据,如下所示
这将返回我的用户列表和他们的平均值,这将决定他们在联赛中的位置(最好的用户在顶部)。
我有一个联赛表,它像这样简单地存储联赛 ID 及其名称
然后我有一个关系表,将用户和排名表联系在一起,一旦我确定了逻辑,它(应该)看起来像这样
ETC...
我被挂断的地方是将用户插入正确的联赛所需的逻辑。也有可能有更多的联赛。例如,如果有 36 个用户和 4 个联赛,则每个联赛应该有 9 个用户。
到目前为止,我的 cron 工作是在执行时运行它(只是为了让您了解我的进度)
在 foreach 的每个循环中,它应该将用户及其适当的联赛存储到关系表中,但我只是迷失了如何运行它并确定我需要为用户league_id 插入的正确联赛。我想我需要每个联赛都有正确的用户数,这可能是
如果有人能在这个过程中引导我朝着正确的方向前进,我将不胜感激。
php - PHPStorm 自动完成数组键(动态插入)
我正在使用 Pimple 依赖注入器,每次使用容器中的依赖项时,我都忍不住要仔细检查用于获取依赖项的键的拼写:
PHPStorm 是否有某种方式来查找这些属性并提供自动完成功能?我考虑过使用类似的东西定义所有这些键
但我想知道是否有更好的方法。
编辑
这是一些示例代码:
事实证明,无论我是否在与 $ioc相同的文件中的 $ioc 声明之前包含 /** @var array|Pimple $ioc */ ,字符串自动完成都可以正常工作。但是,由于我使用的是 Zend Framework,因此我通常使用 $ioc:
php - 在 Yii 中为 PHPUnit 配置 boostrap 文件
如果我使用这个YiiPimple 进行依赖注入,那么如何为 phpunit 配置引导文件?下面给出引导文件内容:
但是当我运行这个 phpunit 时,会发生以下错误:
php - 疙瘩 - 扩展对象定义
我正在重建我当前的代码,并试图通过依赖注入来做到这一点。我已经下载了 Pimple,并在一个文件中尝试为自己创建一些示例。在文档中,我来到了方法扩展,但我无法使其工作。对于测试,我创建了简单的类:
我创建了简单的对象,$DI是 Pimple\Container 的实例:
我试图用这个来扩展它:
但它给了我这个错误:
带有消息“标识符“扩展”的未捕获异常“InvalidArgumentException”不包含对象定义。
所以我查看了容器,发现我需要将方法 __invoke 添加到我的类中,所以我添加了它并使这个方法返回实例:
但在那之后我得到这个错误:
RuntimeException:无法覆盖冻结的服务“扩展”。
有人可以解释我做错了什么吗?谢谢。
php - Silex,在服务中使用 Twig
我正在 Silex 中创建一个应用程序。我想使用 Twig 在我的服务中呈现由 Pimple 加载的模板。我需要这个用于邮件类。
我开始编写基于 silex-skeleton 的应用程序,所以我在 $app['twig'] 中有一个 twig 环境。问题是,当我想将它传递给服务时:
当我写这样的东西时,树枝停止工作。我所有的子页面都显示:
Twig_Error_Loader:模板“(路径).html.twig”未定义()。
我尝试了另一个技巧:
但这也会折断树枝。我试图将 $app['twig'] 分配和克隆到另一个变量,然后它也会发生。
如何在 Silex 中使用 Twig?