Skip to content

Instantly share code, notes, and snippets.

@grizzm0
Last active November 29, 2018 13:57
Show Gist options
  • Save grizzm0/3f2f332ab7b7b859f208 to your computer and use it in GitHub Desktop.
Save grizzm0/3f2f332ab7b7b859f208 to your computer and use it in GitHub Desktop.
<?php
namespace Application\Service;
use DateTime;
class BarService
{
protected $dateTime;
public function __construct(DateTime $dateTime)
{
$this->dateTime = $dateTime;
}
}
<?php
namespace Application\Factory\Service;
use Application\Service\BarService;
use DateTime;
use Interop\Container\ContainerInterface;
class BarServiceFactory
{
/**
* @param ContainerInterface $container
* @return BarService
*/
public function __invoke(ContainerInterface $container)
{
return new BarService(new DateTime());
}
}
<?php
namespace Application\Service;
class FooService
{
protected $barService;
protected $invokableService;
public function __construct(BarService $barService, InvokableService $invokableService)
{
$this->barService = $barService;
$this->invokableService = $invokableService;
}
}
<?php
namespace Application\Factory\Service;
use Application\Service\FooService;
use Interop\Container\ContainerInterface;
class FooServiceFactory
{
/**
* @param ContainerInterface $container
* @return FooService
*/
public function __invoke(ContainerInterface $container)
{
return new FooService(
$container->get(Application\Service\BarService::class),
$container->get(Application\Service\InvokableService::class)
);
}
}
<?php
namespace Application\Service;
class InvokableService
{
}
<?php
return [
'service_manager' => [
'factories' => [
Application\Service\FooService::class => Application\Factory\Service\FooServiceFactory::class,
Application\Service\BarService::class => Application\Factory\Service\BarServiceFactory::class,
Application\Service\InvokableService::class => Zend\ServiceManager\Factory\InvokableFactory::class,
],
],
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment