Bonjour,
Voila je rencontre un petit problème avec mon code.
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');
}
}
}
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
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
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