Skip to content

Instantly share code, notes, and snippets.

@thiagophx
Created October 9, 2011 00:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thiagophx/1273118 to your computer and use it in GitHub Desktop.
Save thiagophx/1273118 to your computer and use it in GitHub Desktop.
ServiceLocator in PHP
<?php
abstract class ServiceLocator
{
protected static $locator;
public static function load(ServiceLocator $locator)
{
self::$locator = $locator;
}
public static function locator()
{
return self::$locator;
}
}
interface DAOServiceLocator
{
public function db();
}
class Db
{
public function connect()
{
return 'connected';
}
}
class DAOLocator extends ServiceLocator implements DAOServiceLocator
{
public function db()
{
return new Db();
}
}
class DAO
{
public function listAll()
{
echo ServiceLocator::locator()->db()->connect();
}
}
ServiceLocator::load(new DAOLocator());
$dao = new DAO();
$dao->listAll();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment