问题标签 [php-di]

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.

0 投票
1 回答
92 浏览

php - 带有 PHP-DI 的 Slim:无法从自动加载器中找到类

我正在尝试从与 Slim 捆绑在一起的 pimple 容器切换到 PHP-DI,但我遇到了让自动装配工作的问题。由于我仅限于使用 PHP 5.6,因此我使用 Slim 3.9.0 和 PHP-DI 5.2.0 以及 php-di/slim-bridge 1.1。

我的项目结构如下:

api/composer.json我有以下内容,然后运行composer dumpautoload

我的api/src/Controller/TestController.php文件包含一个类:

我最初尝试使用最小设置来使自动装配工作,只使用默认配置。index.php

但是,这返回了错误:

我可以让它工作的唯一两种方法是直接放置TestControllerindex.php(这让我觉得 PHP-DI 不能很好地与自动加载器一起使用)或使用\DI\Bridge\Slim\App. 但是,由于我需要显式注册控制器类,这有点违背了使用自动装配的意义(除非我错过了这一点):

0 投票
1 回答
37 浏览

php - 在 Slim Framerwork 的容器上设置 $app 实例是一种不好的做法吗?

我是新手,在使用Slim 框架创建一个小项目时仍然试图围绕 DI 进行思考。

像这样在容器上设置 $app 是一种不好的做法吗?

我想这样做的原因是有可用的具有 $container 和 $app 实例的抽象类,而不必将其作为构造函数参数传递。为了获取容器实例,我使用了 Slim 文档中的这段代码。

然后我想像这样实例化扩展 Service 抽象类的类:

它正在工作,但我觉得我做错了什么,必须有更好的解决方案。如果是这样,你能帮我指出正确的方向吗?

0 投票
0 回答
26 浏览

php - 使用 php-di 获取环境变量

我尝试使用环境变量来配置我的苗条应用程序。

码头工人-compose.yml

在我的 php-di 配置中,我有:

我尝试获取在 docker-compose 中声明的环境变量值来设置我的 PDO 对象。问题是 var_dumps 打印:

我无法使用 PHP-DI 功能获取环境变量值。有人可以帮助我吗?

谢谢

0 投票
0 回答
46 浏览

php - Slim 4 php-di Factory 函数未按预期运行/未“完全”调用

我在注册工厂时遇到问题,导致奇怪的行为。

当我的依赖被工厂函数解决时,我可以看到(通过测试..),实际上只调用了构造函数,仅此而已。

这是工厂函数 + DI 定义:

这是我可以看到的行为,但我不明白:似乎register-function 永远不会被调用。我还通过die('test');$authStrategySelector.

我在日志等中看不到任何错误,并且我在大约 2 小时后就解决了这个问题。

我测试了所有其他涉及的组件,例如 AuthStrategy,它甚至是空的,无法进行测试。

0 投票
0 回答
22 浏览

php - 如何访问在dependencies.php中使用DI创建的PDO实例

如何获得在dependicies.php 中创建的模型类中的PDO 连接?

我有控制器和模型类。

我的路线:

我的控制器:

我在 dependencies.php 中的 DI 设置

我的模特班

如何从模型类中的 dependencies.php 访问 $connection 实例?

0 投票
1 回答
32 浏览

twig - 我正在尝试学习 Slim 4 以及如何使用 PHP-DI 将 Twig 添加到其中,但无法弄清楚

所以我正在使用我在网上找到的骨架......

“boostrap.php”看起来像

在容器中,我添加了 TWIG,我认为是正确的......

所以我认为这是正确的,但是我还需要为 Twig 设置中间件,并且还能够在 Classes/Controller/Routes 中使用它......

在我的中间件中

当前错误是

所以我不确定如何设置我猜测的 Twig 实例/类的密钥。

我是这种 DI 格式的新手,所以我不确定如何添加中间件,然后在整个应用程序中使用它......

谢谢