Ho letto che in Slim v2, $ app era legata alla classe middleware. Sto trovando questo non essere il caso in v3? Qui di seguito è la mia classe middleware, ma sto solo l'undefined:
<?php
namespace CrSrc\Middleware;
class Auth
{
/**
* Example middleware invokable class
*
* @param \Psr\Http\Message\ServerRequestInterface $request PSR7 request
* @param \Psr\Http\Message\ResponseInterface $response PSR7 response
* @param callable $next Next middleware
*
* @return \Psr\Http\Message\ResponseInterface
*/
public function __invoke($request, $response, $next)
{
// before
var_dump($this->getContainer()); // method undefined
var_dump($this->auth); exit; // method undefined
if (! $this->get('auth')->isAuthenticated()) {
// Not authenticated and must be authenticated to access this resource
return $response->withStatus(401);
}
// pass onto the next callable
$response = $next($request, $response);
// after
return $response;
}
}
Qual è il modo corretto per accedere al contenitore DI entro middleware? Immagino che dovrebbe esserci un modo?
Grazie. Penso che alla fine ho pensato che fosse la strada da percorrere nella v3. Sembra funzionare bene comunque. – Martyn
Ottima risposta. Un sacco di persone che usano Slimphp cercano questa risposta, ma è nascosta dietro i cespugli noti come Iniezione delle dipendenze. Grazie! – user2800382