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
Réponse acceptée

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

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

Salut
J'utilise la version ^6.0