use
Zend\ServiceManager\ServiceLocatorInterface;
use
Zend\ServiceManager\AbstractFactoryInterface;
class
MyAbstractFactory
implements
AbstractFactoryInterface
{
public
function
canCreateServiceWithName(ServiceLocatorInterface
$serviceLocator
,
$name
,
$requestedName
)
{
// this abstract factory only knows about 'foo' and 'bar'
return
$requestedName
===
'foo'
||
$requestedName
===
'bar'
;
}
public
function
createServiceWithName(ServiceLocatorInterface
$serviceLocator
,
$name
,
$requestedName
)
{
$service
=
new
\stdClass();
$service
->name =
$requestedName
;
return
$service
;
}
}
$serviceManager
->addAbstractFactory(
'MyAbstractFactory'
);
var_dump(
$serviceManager
->get(
'foo'
)->name);
// foo
var_dump(
$serviceManager
->get(
'bar'
)->name);
// bar
var_dump(
$serviceManager
->get(
'baz'
)->name);
// exception! Zend\ServiceManager\Exception\ServiceNotFoundException