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.

Ce que je fais

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 !

Aucune réponse