Skip to content
This repository has been archived by the owner on Jan 29, 2020. It is now read-only.

Commit

Permalink
Merge branch 'hotfix/5609'
Browse files Browse the repository at this point in the history
  • Loading branch information
weierophinney committed Mar 3, 2014
192 parents 73816d4 + ddebf4d + 9484b97 + fa449ae + b1fa38d + fc19ae0 + 7d5a2cf + e35be49 + b1baf86 + 26aba26 + 306f3e6 + 104e613 + 9e0f279 + a19bb44 + 8553b0b + 02a1820 + e9dd8c9 + 5b5a91a + db9fc36 + f8b7f2b + 09edbcb + 6a99da4 + 4a9dd4d + cc4af6e + 8a07675 + c30b083 + 0c6e411 + be4dae7 + 7465e5d + 1b64e7d + 1f50979 + 92b6722 + 1d54f79 + ab5cea3 + 4f0b000 + c18caa3 + 98036b5 + 3b5c10e + a248769 + 560d3a2 + ddfdb8f + fd4ce84 + 9e4c786 + 0c0695c + 500c51d + 2f2ebee + 145abe5 + bf5d8d7 + fe0fb99 + 5f7322a + c3af80d + cf95a03 + 6a80fae + 10ed584 + 053ab77 + 495f1ba + d688369 + 56b2490 + 47a689e + f52f94e + fec9c74 + 28a9d88 + ac66d19 + 041ae5a + 63454d4 + da02d07 + 698a4d6 + 35967e7 + 427640f + 64a533c + e408635 + c004297 + b38b581 + 9a9f950 + 47a731a + 0967316 + 37f548b + 0df2db0 + e43587e + 5784352 + 93b4f40 + 3208a48 + f5dfded + 8301af5 + d4a4329 + eaf7585 + 12feb56 + 387d3ed + eb7fedd + a9a0285 + 44fa883 + 08a171a + a4b0e54 + 730ce14 + c24c880 + 80e40b3 + 20961e5 + 8cb611e + c958861 + b8b41bc + f82d7c5 + 7784cd5 + 4ed737c + 785b23e + b537b08 + 34ecc47 + 45265ad + df6c341 + efa67eb + 736f9f8 + d3b33d9 + be06520 + be3997d + e7fb236 + 5b19875 + ed60259 + ae0af2f + 761379e + 118bbd6 + 9ce360b + 4d4425a + cc47b49 + c4aa2e1 + c152f67 + bd774aa + a95f940 + fb3126d + f420aa3 + 288aa3f + 9fa9257 + 82606a6 + cbe2b1f + 46ed6e3 + 085bc16 + 5f35882 + 61d8584 + 24a5c98 + c8f7092 + ebdb37c + 3c57460 + d38a8d4 + 5725284 + 9bc667a + 5eedb7e + 0e7a856 + fc7c32a + d1f2eb1 + 5c87eda + 71d8d27 + a365923 + 7f777b6 + c62bcc9 + 4bd3bc3 + a183e11 + 84e6810 + edad949 + 043bfb5 + 8e6f606 + 1c2b629 + e4251d2 + e8c20f9 + 6de8d76 + e529dce + 24f43fa + 336bb38 + d86e872 + 41e010c + 6a5ab3d + ca50dd5 + 8b8277a + 379140a + 145dec3 + 34c979d + 838aade + 7e77c89 + 4357e91 + 6f1e5af + a847f61 + 88ffcfe + 73019c6 + 6b1491a + 480b639 + d5025c5 + 9d8b6c8 + 3820b60 + 63f2d90 + 531f278 + 5555750 + a7f47b6 + 0fc5a92 + d4223fe + 1888379 commit fd829f5
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 30 deletions.
51 changes: 21 additions & 30 deletions src/Definition/RuntimeDefinition.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public function setExplicitClasses(array $explicitClasses)
*/
public function forceLoadClass($class)
{
$this->processClass($class);
$this->processClass($class, true);
}

/**
Expand Down Expand Up @@ -117,10 +117,7 @@ public function hasClass($class)
*/
public function getClassSupertypes($class)
{
if (!array_key_exists($class, $this->classes)) {
$this->processClass($class);
}

$this->processClass($class);
return $this->classes[$class]['supertypes'];
}

Expand All @@ -129,10 +126,7 @@ public function getClassSupertypes($class)
*/
public function getInstantiator($class)
{
if (!array_key_exists($class, $this->classes)) {
$this->processClass($class);
}

$this->processClass($class);
return $this->classes[$class]['instantiator'];
}

Expand All @@ -141,10 +135,7 @@ public function getInstantiator($class)
*/
public function hasMethods($class)
{
if (!array_key_exists($class, $this->classes)) {
$this->processClass($class);
}

$this->processClass($class);
return (count($this->classes[$class]['methods']) > 0);
}

Expand All @@ -153,10 +144,7 @@ public function hasMethods($class)
*/
public function hasMethod($class, $method)
{
if (!array_key_exists($class, $this->classes)) {
$this->processClass($class);
}

$this->processClass($class);
return isset($this->classes[$class]['methods'][$method]);
}

Expand All @@ -165,10 +153,7 @@ public function hasMethod($class, $method)
*/
public function getMethods($class)
{
if (!array_key_exists($class, $this->classes)) {
$this->processClass($class);
}

$this->processClass($class);
return $this->classes[$class]['methods'];
}

Expand All @@ -177,10 +162,7 @@ public function getMethods($class)
*/
public function hasMethodParameters($class, $method)
{
if (!isset($this->classes[$class])) {
return false;
}

$this->processClass($class);
return (array_key_exists($method, $this->classes[$class]['parameters']));
}

Expand All @@ -189,18 +171,27 @@ public function hasMethodParameters($class, $method)
*/
public function getMethodParameters($class, $method)
{
if (!is_array($this->classes[$class])) {
$this->processClass($class);
}

$this->processClass($class);
return $this->classes[$class]['parameters'][$method];
}

/**
* @param string $class
*/
protected function processClass($class)
protected function hasProcessedClass($class)
{
return array_key_exists($class, $this->classes) && is_array($this->classes[$class]);
}

/**
* @param string $class
* @param bool $forceLoad
*/
protected function processClass($class, $forceLoad = false)
{
if (!$forceLoad && $this->hasProcessedClass($class)) {
return;
}
$strategy = $this->introspectionStrategy; // localize for readability

/** @var $rClass \Zend\Code\Reflection\ClassReflection */
Expand Down
13 changes: 13 additions & 0 deletions test/Definition/RuntimeDefinitionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,17 @@ public function testExcludeAwareMethodsWithoutParameters()
$this->assertTrue($definition->hasMethod('ZendTest\Di\TestAsset\AwareClasses\B', 'setSomething'));
$this->assertFalse($definition->hasMethod('ZendTest\Di\TestAsset\AwareClasses\B', 'getSomething'));
}

/**
* Test to see if we can introspect explicit classes
*/
public function testExplicitClassesStillGetProccessedByIntrospectionStrategy()
{
$className = 'ZendTest\Di\TestAsset\ConstructorInjection\OptionalParameters';
$explicitClasses = array($className => true);
$definition = new RuntimeDefinition(null, $explicitClasses);

$this->assertTrue($definition->hasClass($className));
$this->assertSame(array("__construct"=> 3), $definition->getMethods($className));
}
}

0 comments on commit fd829f5

Please sign in to comment.