问题标签 [auryn]
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.
dependency-injection - DI 因命名空间而失败
我正在关注本教程以更深入地了解依赖注入。
因为我们的主机仍在 PHP5.3 上,所以我使用Aura\Web -components来进行 HTTP 响应/请求。依赖注入是用Auryn\Injector完成的
到目前为止,我已经设法让项目运行,但我不能使用别名作为我在注入器中定义的类名:
在我的控制器中,我想使用这个别名:
这会引发以下错误:
Could not make \Example\Controllers\Homepage: Class Http\Request does not exist
我可以通过将类声明为:
这可能使依赖注入有点..没用?Auryn 仍然提供正确的参数 ( $action = $injector->make( $action_class );
),但为什么不接受别名?
我希望我的问题有点道理。:-)
php - Auryn:在 prepare 中使用 make
我目前正在尝试使用 Auryn,并试图通过依赖注入使 Monolog 记录器的特定实例随处可用。我正在使用的代码库使用 PSR LoggerAwareInterface 来指示一个类可以注入一个记录器(通过 setlogger)。
我正在尝试将其设置如下:
但是,这似乎不起作用,因为 $this 不在对象上下文中(尽管 PHP 5.4 应该支持在闭包中使用 $this)。
我也试过这样写。
如果$logger
存在于进行$auryn -> prepare ()
调用的范围内,这确实有效,但我真的一点也不喜欢它,因为它现在需要$logger
存在于 Auryn 之外,这有效地使其成为全局状态,并且似乎破坏了依赖注入容器的点第一名。我更愿意将记录器共享到 Auryn,然后在回调中使用共享实例。
由于我是 Auryn 的新手,因此我可能忽略了一个明显的解决方案。如果是这样,那么我在这里做错了什么?
php - 如何以“正确”的方式将 Auryn 用于 DI?
我正在从头开始编写一个小应用程序,我想使用一些来自 packagegist 的包。对于 DI,我选择了 Auryn。
现在,我了解 Auryn 的第一件事是它试图避免成为依赖容器,并且在文档中明确写道,您不应该将 Auryn 的实例用作容器,将其传递给各个类您的应用程序。
我对此很好,但是,因为我有一个“主”类作为应用程序所有主干的包装器,我认为我应该在这个主类的构造函数中只有一个 Injector 对象的依赖项(那是主要的 Auryn 对象),然后在类的构造函数中,我应该连接所有东西,为 DI 和反射做好准备。
另一种方法是不使用主类,只在我的索引文件中使用干净的程序代码,以与 Auryn 相同的方式将所有连接在一起。
您认为最好的方法是什么?
php - 使用 Auryn 注入正确的配置
我有一个用例,我们使用 Auryn 来连接我们的类,我需要根据参数的值注入不同的配置类。
Auryn 的文档给出了一个注入依赖项的示例:
但如果我也有
我需要根据具体情况确定在 Auryn 产生依赖关系时我是从 Auryn 获得 V8 还是 Hybrid?
这是一个基于 Auryn 文档的人为示例,在实际代码中,该类需要在构造时传递配置。但是基本问题是一样的。
php - 共享对象的相同实例:auryn 与 PHP-DI
我正在尝试构建我的第一个无框架 PHP 应用程序,并且正在关注本教程。我对教程中描述的一些概念相对较新。尽管如此,我还是决定使用PHP-DI作为依赖注入器,而不是建议的(rdlowrey/auryn)。
除了文件Bootstrap.php
(和文件Dependencies.php
:
$class
Homepage
只能是只有一个方法 ( )的类的实例show()
,在 (**) 中调用:
综上所述,应用程序返回一个 200 HTTP 响应,其主体为空 [此处 (*)],但如果我尝试在 (***) 之后打印 HTTP 响应的内容,我会得到正确的响应。这可能意味着 HttpResponse 类有两个不同的实例。(那正确吗?)
通过使用教程作者rdlowrey/auryn,使用该方法share()
在类之间共享相同的HttpReponse实例,如“原始”Dependencies.php
文件所示:
有没有办法使用 PHP-DI(使用 PHP 定义)获得相同的行为?
这是我的版本Dependencies.php
: