diff --git a/src/Guzzle/Service/Builder/ServiceBuilder.php b/src/Guzzle/Service/Builder/ServiceBuilder.php index 7174ca98..6c2da80f 100644 --- a/src/Guzzle/Service/Builder/ServiceBuilder.php +++ b/src/Guzzle/Service/Builder/ServiceBuilder.php @@ -128,6 +128,12 @@ class ServiceBuilder extends AbstractHasDispatcher implements ServiceBuilderInte public function get($name, $throwAway = false) { if (!isset($this->builderConfig[$name])) { + // Check aliases and return a match if found + foreach ($this->builderConfig as $actualName => $config) { + if (isset($config['alias']) && $config['alias'] == $name) { + return $this->get($actualName, $throwAway); + } + } throw new ServiceNotFoundException('No service is registered as ' . $name); } diff --git a/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php b/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php index d4b48c30..115273ed 100644 --- a/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php +++ b/tests/Guzzle/Tests/Service/Builder/ServiceBuilderTest.php @@ -21,6 +21,7 @@ class ServiceBuilderTest extends \Guzzle\Tests\GuzzleTestCase ), ), 'billy.mock' => array( + 'alias' => 'Hello!', 'class' => 'Guzzle\Tests\Service\Mock\MockClient', 'params' => array( 'username' => 'billy', @@ -294,4 +295,10 @@ class ServiceBuilderTest extends \Guzzle\Tests\GuzzleTestCase $this->assertEquals($this->arrayData['michael.mock'], $b->getData('michael.mock')); $this->assertNull($b->getData('ewofweoweofe')); } + + public function testCanGetByAlias() + { + $b = new ServiceBuilder($this->arrayData); + $this->assertSame($b->get('billy.mock'), $b->get('Hello!')); + } }