Skip to content

Instantly share code, notes, and snippets.

@geerteltink
Created August 28, 2015 09:31
Show Gist options
  • Select an option

  • Save geerteltink/6cfb459dcd1adcaebb24 to your computer and use it in GitHub Desktop.

Select an option

Save geerteltink/6cfb459dcd1adcaebb24 to your computer and use it in GitHub Desktop.
zend-service-manager abstract class container injection
<?php
namespace Application\Action;
use Interop\Container\ContainerInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Zend\Expressive\Template\TemplateInterface;
use Zend\Stratigility\MiddlewareInterface;
/**
* Action abstract class
*/
abstract class AbstractAction implements MiddlewareInterface
{
/**
* @var ContainerInterface
*/
protected $container;
/**
* Constructor
*
* @param ContainerInterface $container
*/
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
/**
* {@inheritdoc}
*/
abstract public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
);
/**
* Get services
*
* @return ContainerInterface
*/
public function getContainer()
{
return $this->container;
}
/**
* Get template renderer
*
* @return TemplateInterface
*/
public function getRenderer()
{
return $this->getContainer()->get('Zend\Expressive\Template\TemplateInterface');
}
}
<?php
namespace Application\Action;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Zend\Stratigility\MiddlewareInterface;
class HomePageAction extends AbstractAction implements MiddlewareInterface
{
public function __invoke(Request $request, Response $response, callable $next = null)
{
$renderer = $this->getRenderer();
var_dump($renderer);
$response->getBody()->write('Hello, world!');
return $next($request, $response);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment