Skip to content

Commit

Permalink
Issue zendframework#5395: remove unnecessary can create function and …
Browse files Browse the repository at this point in the history
…add logic to has()
  • Loading branch information
franz-deleon committed Nov 1, 2013
1 parent 5b7275d commit 673aa86
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 39 deletions.
41 changes: 9 additions & 32 deletions library/Zend/ServiceManager/ServiceManager.php
Expand Up @@ -639,28 +639,14 @@ public function doCreate($rName, $cName)
}

/**
* Determine if we can create an instance.
*
* @param string|array $name
* @param bool $checkAbstractFactories
* @param string|array $name
* @param bool $checkAbstractFactories
* @param bool $usePeeringServiceManagers
* @return bool
*
* @deprecated this method is being deprecated as of zendframework 2.2, and may be removed in future major versions
*/
public function canCreate($name, $checkAbstractFactories = true)
public function has($name, $checkAbstractFactories = true, $usePeeringServiceManagers = true)
{
if (is_array($name)) {
if (count($name) === 2) {
list($cName, $rName) = $name;
} else {
$name = array_slice($name, 0, 1);
$rName = array_pop($name);

// check if key is string
$name = array_pop(array_flip($name));
$cName = is_string($name) ? $name : $this->canonicalizeName($rName);
}
} elseif (is_string($name)) {
if (is_string($name)) {
$rName = $name;

// inlined code from ServiceManager::canonicalizeName for performance
Expand All @@ -669,28 +655,19 @@ public function canCreate($name, $checkAbstractFactories = true)
} else {
$cName = $this->canonicalizeName($name);
}
} elseif (is_array($name) && count($name) >= 2) {
list($cName, $rName) = $name;
} else {
return false;
}

return (
if (
isset($this->invokableClasses[$cName])
|| isset($this->factories[$cName])
|| isset($this->aliases[$cName])
|| isset($this->instances[$cName])
|| ($checkAbstractFactories && $this->canCreateFromAbstractFactory($cName, $rName))
);
}

/**
* @param string|array $name
* @param bool $checkAbstractFactories
* @param bool $usePeeringServiceManagers
* @return bool
*/
public function has($name, $checkAbstractFactories = true, $usePeeringServiceManagers = true)
{
if ($this->canCreate($name, $checkAbstractFactories)) {
) {
return true;
}

Expand Down
8 changes: 1 addition & 7 deletions tests/ZendTest/ServiceManager/ServiceManagerTest.php
Expand Up @@ -348,16 +348,10 @@ public function testHasReturnsFalseOnNonStringsAndArrays()

public function testHasAcceptsArrays()
{
$this->serviceManager->setInvokableClass('foobar', 'bar');
$this->serviceManager->setInvokableClass('foobar', 'foo');
$this->assertTrue($this->serviceManager->has(array('foobar', 'foo_bar')));
}

public function testHasAcceptsAssociateArrays()
{
$this->serviceManager->setInvokableClass('foobar', 'bar');
$this->assertTrue($this->serviceManager->has(array('foobar' => 'foo_bar')));
}

/**
* @covers Zend\ServiceManager\ServiceManager::has
*/
Expand Down

0 comments on commit 673aa86

Please sign in to comment.