问题标签 [zend-servicemanager]
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.
php - 在 Zend Framework 3 中使用选项调用服务
在 ZF3 中,我使用以下表示法从控制器调用表单工厂:
不是
在工厂中,我使用的是 ZF3 推荐的方法:
我假设该$options
数组旨在将参数传递给函数。如何$options
在控制器中填充数组?
php - Zend Framework 3 为 HTML 电子邮件渲染 HTML
有什么方法可以在控制器中获取视图的 html 内容吗?我正在尝试从 ZF3 发送 html 电子邮件,但是,我还没有找到任何将 html 内容获取到控制器的方法。
我使用了控制器渲染方法,
$render = new PHPRenderer(); $渲染->渲染();
但是在上面的代码和加载视图之后代码停止执行。我需要将 HTML 内容设置为电子邮件正文。
zend-framework - 在 Zend Service Manager 组件中构建新的对象实例
我想知道最佳实践问题并考虑易于测试的类,当我需要特定类中相同(制造)对象的多个不同实例时,推荐哪种方法?
之前我用过ServiceManager的构建方式,但是现在已经不推荐直接把ServiceManager注入到一个类中了吧?
php - 在 Zend Expressive 3 中使用 AbstractPluginManager
我想将一组实现公共接口的对象注入到我的一个服务中。我使用 zend servicemanager 作为 DI 容器。我现在已经阅读了很多文档,在我看来 AbstractPluginManager 是要走的路。我无法让它工作。有没有使用 AbstractPluginManager + Zend Expressive 3 的示例,我可以看看?
我的最终目标是将所有实现公共接口的注册类动态注入到我的服务中。
例子:
我的服务
提前致谢
zend-framework - ZF3:使用在 ServiceManager 中注册的抽象工厂创建类时出现 ServiceNotFoundException
我遇到了抽象工厂示例的问题。
我ServiceNotFoundException
在使用在 ServiceManager 中注册的抽象工厂创建类时得到。
首先我用 composer 下载 zend-servicemanager
然后我在单个文件中运行 ServiceManager 示例(为简单起见)。
应使用 ServiceManager 获取的类。
我使用文档中的 MyAbstractFactory。
我使用已注册的抽象工厂创建 ServiceManager。
最后我尝试获取A类的实例。
我得到
Fatal error: Uncaught Zend\ServiceManager\Exception\ServiceNotFoundException: Unable to resolve service "A" to a factory; are you certain you provided it during configuration?
了堆栈跟踪
zend-framework3 - 记录器不记录应用程序中抛出的异常
我使用下面的配置来创建一个记录器:
日志工作正常,但 php 错误未在任何地方记录。
为什么?
我使用此代码生成一个简单的错误
在我的控制器类中。
未记录此错误
mezzio - Zend Service Manager - 尝试使用 phpdebugbar 时未找到服务异常
我正在尝试在干净的 Zend Expressive Skeleton 应用程序中使用https://github.com/php-middleware/phpdebugbar 。
我知道此页面上的说明建议使用此 DI 配置(如果使用 pimple):
所以我尝试使用它(我正在使用 zend 服务管理器):
但我遇到了以下错误:
我也试过这个:
和这个:
但仍然没有运气。
诚然,我不熟悉 Zend/Diactoros,但我不明白如何Zend\Diactoros\ResponseFactory
成为工厂,它没有__invoke()
方法。所以我觉得这是我问题的核心。我应该为此创建自己的工厂吗?我觉得这不是这样做的预期方式。
请注意,我也尝试按照这些说明进行操作。虽然没有错误,但它似乎根本没有出现: https ://docs.zendframework.com/zend-expressive/v3/cookbook/debug-toolbars/
我确定我错过了一些关键部分,但我错过了什么?
我的作曲家.json:
zend-framework2 - ZF FactoryInterface - 使用选项参数配置加载依赖项
我想知道加载复杂对象的最佳实践。首先,在解决问题之前,我将概述一些样板文件。假设如下:一个简单的域模型客户端使用 tablegateway 加载,每个阶段都使用工厂来注入依赖项:
此 Client 对象的工厂:
接下来是使用 TableGateway 的映射器工厂:
TableGatewayFactory:
请注意使用 HydratingResultset 从 ResultSet 返回完全形成的 Client 对象。这一切都很好。现在客户端对象有几个相关的对象作为属性,所以在使用 HydratingResultSet 时,我将添加一个 AggregateHydrator 来加载它们:
最后,客户水合器工厂:
... 上述保湿剂的要点如下:
最后,我们解决了这个问题。以上工作完美,将非常干净地加载一个客户端对象,所有相关对象都完全形成。但是我有一些资源不需要整个对象图 - 例如,当查看所有客户端的表时 - 不需要加载任何更多信息。
所以我一直在考虑使用工厂来选择要包含的依赖项的方法。
解决方案 1 每个用例的工厂。如果只需要客户端数据(没有依赖关系),则创建一系列工厂,即 ClientFactory、SimpleClientFactory、ComplexClientFactory、ClientWithAppointmentsFactory 等。似乎是多余的,并且不是很可重用。
解决方案 2 使用 FactoryInterface 中定义的选项参数将“加载”选项传递给水合器工厂,例如:
映射器工厂将选项传递给 tablegateway 工厂,后者将它们传递给 hydrator 工厂:
最后,我们可以在这里定义要加载到客户端的信息量:
这似乎是一个干净的解决方案,因为可以根据请求定义依赖关系。但是我不认为这是按预期使用选项参数 - 文档指出该参数应该用于将构造函数参数传递给对象,而不是定义工厂应该使用什么逻辑来加载依赖项。
任何建议或实现上述目标的替代解决方案都会很棒。谢谢阅读。
php - 实施服务
我对 Laminas API 工具很陌生,我想了解如何将服务正确地注入到我的休息服务中。
例子:
我需要实现一些东西// send email to user
来调用下一个类的发送方法
(Mail 类有一个像下面这样的工厂(也是 UsersResource,但我不知道它是否重要))
我检查了laminas-servicemanager但不知道如何进行,有什么提示吗?
php - 如何将服务管理器注入 Zend Framework 3 中的模型文件
我刚刚将一个项目从 ZF 1.x 版本升级到 Zend Framework 3。
在 ZF 1.x 版本中,我们实现了一个功能,例如为使用 Zend Registry 组件在应用程序中发出的请求提供唯一 id,这在 ZF 3 中不存在。我正在尝试使用 ServiceManager 实现该功能。
所以我尝试通过创建一个工厂类将 ServiceManager 注入模型文件,如下所示:
我的模型类文件代码:
工厂类代码:
更新 module.config.php 文件如下:
但它不起作用并给出以下错误。
可捕获的致命错误:传递给 Application\Model\Common\CommonUtils::__construct() 的参数 1 必须是 Zend\ServiceManager\ServiceManager 的实例,没有给出
有人请在这里帮助我了解如何在 Zend Framework 3 的模型文件中访问/注入 ServiceManager。
提前致谢。