An implementation of the service locator design pattern.
use Phine\Locator\Locator;
use Phine\Locator\Service\AbstractService;
use Phine\Locator\Service\ResolvableInterface;
/**
* A service that simply gets returned.
*/
class SimpleService extends AbstractService
{
}
/**
* A service that causes the locator to return something else.
*/
class ResolvedService extends AbstractService implements ResolvableInterface
{
/**
* {@inheritDoc}
*/
public function getResolvedValue()
{
return 'Something else.';
}
}
// create my locator
$locator = new Locator();
// register my services
$locator->registerService('simple', new SimpleService());
$locator->registerService('resolved', new ResolvedService());
// access my services
echo get_class($locator->getService('simple')); // "SimpleService"
echo $locator->resolveService('resolved'); // "Something else."
Array accessible version of above:
use Phine\Locator\ArrayLocator;
// create my locator
$locator = new ArrayLocator();
// register my services
$locator['simple'] = new SimpleService();
$locator['resolved'] = new ResolvedService();
// access my services
echo get_class($locator['simple']); // "SimpleService"
echo $locator['resolved']; // "Something else."
Please see the wiki for examples.
- PHP >= 5.3.3
- Phine Exception >= 1.0.0
Via Composer:
$ composer require "phine/locator=~1.0"
You can find the documentation in the docs/
directory.
This library is available under the MIT license.