Reflection - getProperties() method - allow to include properties of parent classes

This commit is contained in:
Meritoo
2017-09-21 22:35:21 +02:00
parent a0d28b326e
commit 633696ebc0
5 changed files with 57 additions and 12 deletions

View File

@@ -19,8 +19,15 @@ class A
{
use E;
private $count = 1;
protected function lorem()
{
return 'ipsum';
}
protected function getCount()
{
return $this->count;
}
}

View File

@@ -17,4 +17,10 @@ namespace Meritoo\Common\Test\Utilities\Reflection;
*/
class B extends A
{
protected $name = 'Lorem Ipsum';
public function getName()
{
return $this->name;
}
}

View File

@@ -20,6 +20,7 @@ use Meritoo\Common\Test\Utilities\Reflection\C;
use Meritoo\Common\Test\Utilities\Reflection\D;
use Meritoo\Common\Test\Utilities\Reflection\E;
use Meritoo\Common\Utilities\Reflection;
use ReflectionProperty;
/**
* Tests of the useful reflection methods
@@ -176,11 +177,11 @@ class ReflectionTest extends BaseTestCase
public function testGetMethods()
{
self::assertEquals(0, count(Reflection::getMethods(B::class, true)));
self::assertEquals(1, count(Reflection::getMethods(B::class)));
self::assertEquals(1, count(Reflection::getMethods(A::class)));
self::assertEquals(1, count(Reflection::getMethods(B::class, true)));
self::assertEquals(3, count(Reflection::getMethods(B::class)));
self::assertEquals(2, count(Reflection::getMethods(A::class)));
self::assertEquals(2, count(Reflection::getMethods(C::class, true)));
self::assertEquals(3, count(Reflection::getMethods(C::class)));
self::assertEquals(5, count(Reflection::getMethods(C::class)));
}
/**
@@ -221,6 +222,23 @@ class ReflectionTest extends BaseTestCase
self::assertFalse(Reflection::usesTrait(D::class, E::class, true));
}
public function testGetProperties()
{
self::assertCount(1, Reflection::getProperties(B::class));
}
public function testGetPropertiesUsingFilter()
{
self::assertCount(1, Reflection::getProperties(B::class, ReflectionProperty::IS_PROTECTED));
self::assertCount(0, Reflection::getProperties(B::class, ReflectionProperty::IS_PRIVATE));
self::assertCount(1, Reflection::getProperties(B::class, ReflectionProperty::IS_PRIVATE, true));
}
public function testGetPropertiesWithParents()
{
self::assertCount(2, Reflection::getProperties(B::class, null, true));
}
/**
* Provides invalid class and trait
*