Bonjour,
Voila je rencontre un petit problème avec mon code, je souhaiterais que php-di me retourne l'instance actuelle de php-di lors de l'appel d'une class. Je me base sur l'infrastructure de la formation Mise en pratique de la POO en PHP. Je rencontre ce problème suite à une adaptation afin d'utiliser la dernière version actuelle de ZendExpressive FastRoute.
Pour y parvenir j'ai effectuer les modifications comme ce poste l'indique.
sauf que je modifie le constructeur comme suit :
public function __construct($callback, \DI\Container $container)
{
if (is_string($callback)) {
$callback = $container->call($callback);
}
$this->callback = $callback;
}
Mon fichier de configuration PHP-DI
use function DI\{create, factory, get};
use Core\Router\Router;;
use Core\Router\RouterTwigExtension;
use Core\Renderer\RendererInterface;
use Core\Renderer\TwigRendererFactory;
use Core\Renderer\TwigExtensions\{ImagesTwig};
return [
'db.host' => '///////////////',
'db.user' => ''///////////////',',
'db.pass' => ''///////////////',',
'db.name' => '///////////////',,
'db.dev.name' => ''///////////////',',
'view.path' => dirname(__DIR__) . '/Modules',
'twig.extensions' => [
get(RouterTwigExtension::class),
get(ImagesTwig::class)
],
Router::class => create(), // la classe qui doit retourner php DI
\DI\Container::class => /* Retourner l'instance actuelle de php-di */,
RendererInterface::class => factory(TwigRendererFactory::class),
];
J'instancie php-di dans mon index comme suit :
$modules = [
\Modules\ExempleModule\ExempleModule::class,
\Modules\Showcase\Showcase::class,
\Modules\Authentication\Authentication::class,
\Modules\userPanel\userPanel::class,
\Modules\Admin\Admin::class
];
$builder = new ContainerBuilder();
$builder->addDefinitions(__DIR__ . '/config/config.php');
foreach ($modules as $module) {
if ($module::DEFINITIONS) { $builder->addDefinitions($module::DEFINITIONS); }}
$container = $builder->build();
Merci d'avance pour votre aide !