Есть по крайней мере две важные вещи, которые я бы предложил.
Во-первых, статический метод не может вызвать $ this.В Slim Skeleton вы видите, что регистратор вызывается с помощью магического метода __invoke.Это не обязательно должен быть магический метод, а просто «статическая функция», чтобы получить доступ к $ this.
Второй - конструктор.Несмотря на то, что в ваших зависимостях вы указали, что хотите извлечь регистратор из контейнера, ваш текущий конструктор не ссылается на него.Вы видите это снова в шаблоне скелета Slim.Если вы не хотите использовать объявления «use», вы можете сделать:назови это.
<?php
namespace App\Action;
use Slim\Views\Twig;
use Psr\Log\LoggerInterface;
use Slim\Http\Request;
use Slim\Http\Response;
final class HomeAction
{
private $view;
private $logger;
public function __construct(Twig $view, LoggerInterface $logger)
{
$this->view = $view;
$this->logger = $logger;
}
public function __invoke(Request $request, Response $response, $args)
{
$this->logger->info("Home page action dispatched");
$this->view->render($response, 'home.twig');
return $response;
}
}
Удачи вам