问题标签 [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.
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
但是,这返回了错误:
我可以让它工作的唯一两种方法是直接放置TestController
类index.php
(这让我觉得 PHP-DI 不能很好地与自动加载器一起使用)或使用\DI\Bridge\Slim\App
. 但是,由于我需要显式注册控制器类,这有点违背了使用自动装配的意义(除非我错过了这一点):
php - 在 Slim Framerwork 的容器上设置 $app 实例是一种不好的做法吗?
我是新手,在使用Slim 框架创建一个小项目时仍然试图围绕 DI 进行思考。
像这样在容器上设置 $app 是一种不好的做法吗?
我想这样做的原因是有可用的具有 $container 和 $app 实例的抽象类,而不必将其作为构造函数参数传递。为了获取容器实例,我使用了 Slim 文档中的这段代码。
然后我想像这样实例化扩展 Service 抽象类的类:
它正在工作,但我觉得我做错了什么,必须有更好的解决方案。如果是这样,你能帮我指出正确的方向吗?
php - 使用 php-di 获取环境变量
我尝试使用环境变量来配置我的苗条应用程序。
码头工人-compose.yml
在我的 php-di 配置中,我有:
我尝试获取在 docker-compose 中声明的环境变量值来设置我的 PDO 对象。问题是 var_dumps 打印:
我无法使用 PHP-DI 功能获取环境变量值。有人可以帮助我吗?
谢谢
php - Slim 4 php-di Factory 函数未按预期运行/未“完全”调用
我在注册工厂时遇到问题,导致奇怪的行为。
当我的依赖被工厂函数解决时,我可以看到(通过测试..),实际上只调用了构造函数,仅此而已。
这是工厂函数 + DI 定义:
这是我可以看到的行为,但我不明白:似乎register
-function 永远不会被调用。我还通过die('test');
在$authStrategySelector
.
我在日志等中看不到任何错误,并且我在大约 2 小时后就解决了这个问题。
我测试了所有其他涉及的组件,例如 AuthStrategy,它甚至是空的,无法进行测试。
php - 如何访问在dependencies.php中使用DI创建的PDO实例
如何获得在dependicies.php 中创建的模型类中的PDO 连接?
我有控制器和模型类。
我的路线:
我的控制器:
我在 dependencies.php 中的 DI 设置
我的模特班
如何从模型类中的 dependencies.php 访问 $connection 实例?
twig - 我正在尝试学习 Slim 4 以及如何使用 PHP-DI 将 Twig 添加到其中,但无法弄清楚
所以我正在使用我在网上找到的骨架......
“boostrap.php”看起来像
在容器中,我添加了 TWIG,我认为是正确的......
所以我认为这是正确的,但是我还需要为 Twig 设置中间件,并且还能够在 Classes/Controller/Routes 中使用它......
在我的中间件中
当前错误是
所以我不确定如何设置我猜测的 Twig 实例/类的密钥。
我是这种 DI 格式的新手,所以我不确定如何添加中间件,然后在整个应用程序中使用它......
谢谢