El acceso $ this dentro de una ruta no funciona “Usar $ this cuando no está en el contexto del objeto”

Estoy tratando de usar $this dentro de una función de una ruta, cuando lo hago, me da el siguiente error:

 Using $this when not in object context 

Aquí está el código:

 function api($request, $response) { $response->write('REST API v1'); $this->logger->addInfo("Something interesting happened"); return $response; } $app = new \Slim\App(); /** my routes here **/ $app->get('/', 'api'); $app->run(); 

He tratado de implementarlo en base a esto .

Por qué no funciona usar $this dentro de la función y cómo puedo usar $this dentro de una función.

No es posible usar $this dentro de la función cuando se declara con una cadena. Use una función anónima en su lugar (una clase de controlador también sería una solución):

 $app->get('/', function ($request, $response) { $response->write('REST API v1'); $this->logger->addInfo("Something interesting happened"); return $response; }); 

Ver: http://www.slimframework.com/docs/objects/router.html

Si utiliza una instancia de cierre como devolución de ruta, el estado del cierre está vinculado a la instancia del contenedor. Esto significa que tendrá acceso a la instancia del contenedor DI dentro del Cierre a través de $this keyword.