Author: smarr Date: Mon Dec 31 01:05:01 2007 New Revision: 7046 Log: still 7 failures: will be probably fixed by implementing missing parts
Added: experimental/Reflection/tests/test_classes/MyReflectionMethod.php experimental/Reflection/tests/test_classes/MyReflectionProperty.php experimental/Reflection/tests/test_classes/interface.php Modified: experimental/Reflection/src/class.php experimental/Reflection/src/extension.php experimental/Reflection/src/method.php experimental/Reflection/tests/class_test.php experimental/Reflection/tests/suite.php experimental/Reflection/tests/test_classes/MyReflectionClass.php Modified: experimental/Reflection/src/class.php ============================================================================== --- experimental/Reflection/src/class.php [iso-8859-1] (original) +++ experimental/Reflection/src/class.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -105,7 +105,11 @@ * @return ezcReflectionMethod */ public function getMethod($name) { - return new ezcReflectionMethod($this->class, $name); + if ( $this->class instanceof ReflectionClass ) { + return new ezcReflectionMethod($this->class->getMethod($name)); + } else { + return new ezcReflectionMethod(parent::getMethod($name)); + } } /** @@ -186,7 +190,7 @@ } if (is_object($parentClass)) { - return new ezcReflectionClassType($parentClass->getName()); + return new ezcReflectionClassType($parentClass); } else { return null; @@ -222,8 +226,8 @@ * @return ezcReflectionProperty[] */ public function getProperties($filter = null) { - if ( $this->reflectionSource ) { - $props = $this->reflectionSource->getProperties($filter); + if ( $this->class instanceof ReflectionClass ) { + $props = $this->class->getProperties($filter); } else { $props = parent::getProperties($filter); } Modified: experimental/Reflection/src/extension.php ============================================================================== --- experimental/Reflection/src/extension.php [iso-8859-1] (original) +++ experimental/Reflection/src/extension.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -18,22 +18,35 @@ */ class ezcReflectionExtension extends ReflectionExtension { + /** + * @var ReflectionExtension + */ + protected $reflectionSource = null; + /** - * @param string $name + * @param string|ReflectionExtension $extension */ - public function __construct($name) { - parent::__construct($name); + public function __construct($extension) { + if ( $extension instanceof ReflectionExtension ) { + $this->reflectionSource = $extension; + } else { + parent::__construct( $extension ); + } } /** * @return ezcReflectionFunction[] */ public function getFunctions() { - $functs = parent::getFunctions(); + if ( $this->reflectionSource ) { + $functs = $this->reflectionSource->getFunctions(); + } else { + $functs = parent::getFunctions(); + } + $result = array(); foreach ($functs as $func) { - $function = new ezcReflectionFunction($func->getName()); - $result[] = $function; + $result[] = new ezcReflectionFunction($func); } return $result; } @@ -42,11 +55,15 @@ * @return ezcReflectionClassType[] */ public function getClasses() { - $classes = parent::getClasses(); + if ( $this->reflectionSource ) { + $classes = $this->reflectionSource->getClasses(); + } else { + $classes = parent::getClasses(); + } + $result = array(); foreach ($classes as $class) { - $extClass = new ezcReflectionClassType($class->getName()); - $result[] = $extClass; + $result[] = new ezcReflectionClassType($class); } return $result; } Modified: experimental/Reflection/src/method.php ============================================================================== --- experimental/Reflection/src/method.php [iso-8859-1] (original) +++ experimental/Reflection/src/method.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -231,6 +231,18 @@ } /** + * Name of the method + * @return string + */ + public function getName() { + if ( $this->reflectionSource ) { + return $this->reflectionSource->getName(); + } else { + return parent::getName(); + } + } + + /** * Use overloading to call additional methods * of the reflection instance given to the constructor * Modified: experimental/Reflection/tests/class_test.php ============================================================================== --- experimental/Reflection/tests/class_test.php [iso-8859-1] (original) +++ experimental/Reflection/tests/class_test.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -30,13 +30,13 @@ public function testGetMethod() { $method = $this->class->getMethod('helloWorld'); self::assertType('ezcReflectionMethod', $method); - self::assertEquals($method->getName(), 'helloWorld'); + self::assertEquals('helloWorld', $method->getName()); } public function testGetConstructor() { $method = $this->class->getConstructor(); self::assertType('ezcReflectionMethod', $method); - self::assertEquals($method->getName(), '__construct'); + self::assertEquals('__construct', $method->getName()); } public function testGetInterfaces() { @@ -52,10 +52,9 @@ $methods = $class->getMethods(); self::assertEquals(0, count($methods)); - $class = new ezcReflectionClass('TestMethods'); - $methods = $class->getMethods(); + $methods = $this->class->getMethods(); - $expectedMethods = array('__construct', 'm1', 'm2', 'm3', 'm4'); + $expectedMethods = array('__construct', 'helloWorld'); foreach ($methods as $method) { self::assertType('ezcReflectionMethod', $method); self::assertContains($method->getName(), $expectedMethods); @@ -152,10 +151,9 @@ $class = new ezcReflectionClass('ReflectionClass'); $ext = $class->getExtension(); self::assertType('ezcReflectionExtension', $ext); - self::assertEquals($ext->getName(), 'Reflection'); + self::assertEquals('Reflection', $ext->getName()); - $class = new ezcReflectionClass('TestWebservice'); - $ext = $class->getExtension(); + $ext = $this->class->getExtension(); self::assertNull($ext); } Modified: experimental/Reflection/tests/suite.php ============================================================================== --- experimental/Reflection/tests/suite.php [iso-8859-1] (original) +++ experimental/Reflection/tests/suite.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -24,6 +24,8 @@ require_once 'test_classes/methods.php'; require_once 'test_classes/methods2.php'; require_once 'test_classes/MyReflectionClass.php'; +require_once 'test_classes/MyReflectionProperty.php'; +require_once 'test_classes/MyReflectionMethod.php'; require_once 'test_classes/webservice.php'; require_once 'test_classes/interface.php'; require_once 'test_classes/BaseClass.php'; Modified: experimental/Reflection/tests/test_classes/MyReflectionClass.php ============================================================================== --- experimental/Reflection/tests/test_classes/MyReflectionClass.php [iso-8859-1] (original) +++ experimental/Reflection/tests/test_classes/MyReflectionClass.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -1,8 +1,8 @@ <?php class MyReflectionClass extends ReflectionClass { - - public function doSomeMetaProgramming() + + public function doSomeMetaProgramming() { return true; } @@ -10,6 +10,61 @@ public function change() { return true; } + + public function getConstructor() { + return new MyReflectionMethod($this->getName(), parent::getConstructor()->getName()); + } + + public function getMethod($name) { + return new MyReflectionMethod($this->getName(), $name); + } + + public function getMethods($filter = null) { + $methods = parent::getMethods($filter); + + $result = array(); + foreach ($methods as $method) { + $result[] = new MyReflectionMethod($this->getName(), $method->getName()); + } + return $result; + } + + public function getProperty($name) { + return new MyReflectionProperty($this->getName(), $name); + } + + public function getProperties($filter = null) { + $props = parent::getProperties($filter); + + $result = array(); + foreach ($props as $prop) { + $result[] = new MyReflectionProperty($this->getName(), $prop->getName()); + } + return $result; + } + + public function getInterfaces() { + $ifaces = parent::getInterfaceNames(); + + $result = array(); + foreach ($ifaces as $iface) { + $result[] = new MyReflectionClass($iface); + } + return $result; + } + + public function getParentClass() { + $parent = parent::getParentClass(); + if ( $parent == null ) { + return null; + } else { + return new MyReflectionClass($parent->getName()); + } + } + + public function getExtension() { + return new MyReflectionExtension(parent::getExtensionName()); + } } ?> Added: experimental/Reflection/tests/test_classes/MyReflectionMethod.php ============================================================================== --- experimental/Reflection/tests/test_classes/MyReflectionMethod.php (added) +++ experimental/Reflection/tests/test_classes/MyReflectionMethod.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -1,0 +1,21 @@ +<?php +class MyReflectionMethod extends ReflectionMethod { + public function change() { + return true; + } + + public function getDeclaringClass() { + return new MyReflectionClass(parent::getDeclaringClass()->getName()); + } + + public function getParameters() { + $params = parent::getParameters(); + + $result = array(); + foreach ($params as $param) { + $result = new MyReflectionProperty($this->getName(), $param->getName()); + } + return $result; + } +} +?> Added: experimental/Reflection/tests/test_classes/MyReflectionProperty.php ============================================================================== --- experimental/Reflection/tests/test_classes/MyReflectionProperty.php (added) +++ experimental/Reflection/tests/test_classes/MyReflectionProperty.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -1,0 +1,11 @@ +<?php +class MyReflectionProperty extends ReflectionProperty { + public function change() { + return true; + } + + public function getDeclaringClass() { + return new MyReflectionClass(parent::getDeclaringClass()->getName()); + } +} +?> Added: experimental/Reflection/tests/test_classes/interface.php ============================================================================== --- experimental/Reflection/tests/test_classes/interface.php (added) +++ experimental/Reflection/tests/test_classes/interface.php [iso-8859-1] Mon Dec 31 01:05:01 2007 @@ -1,0 +1,5 @@ +<?php +interface IInterface { + +} +?> -- svn-components mailing list svn-components@lists.ez.no http://lists.ez.no/mailman/listinfo/svn-components