Call to undefined function DI\object()

Par Jordan nganda, il y a 7 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

ma page config/config.php <?php use Framework\Renderer\RendererInterface; use Framework\Renderer\TwigRendererFactory; return [ 'views.path' => dirname( __DIR__) .'/views', \Framework\Router::class => \DI\object(), RendererInterface::class => \DI\factory(TwigRendererFactory::class) ]; ma page app <?php namespace Framework; use GuzzleHttp\Psr7\Response; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Container\ContainerInterface; class App{ /** * List of module * @var array */ private $modules=[]; /** * Container * @var Container */ private $container; /** * App constructor * @param ContainerInterface $container * @param string[] $modules Liste des modules à charger */ public function __construct(ContainerInterface $container, array $modules= []){ $this->container = $container; foreach ($modules as $module) { $this->modules[] = $container->get($module); } } public function run(ServerRequestInterface $request): ResponseInterface{ $uri= $request->getUri()->getPath(); if(!empty($uri) && $uri[-1] === "/"){ return (new Response()) ->withStatus(301) ->withHeader('Location', substr($uri, 0, -1)); } if ($uri === '/accueil') { return new Response(200, [], '<h1>Bienvenu sur le blog</h1>'); } $router= $this->$container->get(Router::class); $route= $router->match($request); if (is_null($route)){ return new Response(404, [], "<h1>error sur le blog</h1>"); } $params= $route->getParams(); $request= array_reduce(array_keys($params), function($request, $key) use ($params){ return $request->withAttribute($key, $params[$key]); }, $request); $response= call_user_func_array($route->getCallback(), [$request]); if (is_string($response)) { return new Response(200, [], $response); } elseif ($responce instanceof ResponseInterface) { return $response; } else{ throw \Exception('The responce is not string or an instance of ResponseInterface'); } } }

Ce que je veux

Je realise Mon framework grace aux cours que vous avez donnez sur la realisation de son propre framework je tout copier de A-Z et meme corriger d'avance vos faute mais cette erreur s'affiche merci de resoudre mon probleme

Ce que j'obtiens

Fatal error: Uncaught Error: Call to undefined function DI\object() in C:\wamp\www\Monframework\config\config.php:8 Stack trace: #0 C:\wamp\www\Monframework\vendor\php-di\php-di\src\Definition\Source\DefinitionFile.php(59): require() #1 C:\wamp\www\Monframework\vendor\php-di\php-di\src\Definition\Source\DefinitionFile.php(38): DI\Definition\Source\DefinitionFile->initialize() #2 C:\wamp\www\Monframework\vendor\php-di\php-di\src\Definition\Source\SourceChain.php(54): DI\Definition\Source\DefinitionFile->getDefinition('App\Blog\BlogMo...') #3 C:\wamp\www\Monframework\vendor\php-di\php-di\src\Container.php(154): DI\Definition\Source\SourceChain->getDefinition('App\Blog\BlogMo...') #4 C:\wamp\www\Monframework\vendor\php-di\php-di\src\Container.php(133): DI\Container->getDefinition('App\Blog\BlogMo...') #5 C:\wamp\www\Monframework\src\Framework\App.php(30): DI\Container->get('App\Blog\BlogMo...') #6 C:\wamp\www\Monframework\public\index.php(10): Framework\App->__construct(Object(DI\Container), Array) #7 {main} thrown in C:\wamp\www\Monframework\config\config.php on line 8

3 réponses

Romano83, il y a 7 ans

Salut !
Quelle est ta version de PHP-DI ?
Si tu utilises la dernière version (v 6.x), la classe DI\Object() a été retirée, d'où peut être cette erreur.
Migration PHP-DI v5 -> v6

Jordan nganda, il y a 7 ans

Salut
J'utilise la version ^6.0

Romano83, il y a 7 ans

Salut,
alors suit le lien que je t'ai donné dans mon précédent post. Tu trouvera la réponse à ton problème.