1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
<?php
/**
* Test: Nette\Utils\ObjectHelpers::getMagicProperties()
*/
declare(strict_types=1);
use Nette\Utils\ObjectHelpers;
use Tester\Assert;
require __DIR__ . '/../bootstrap.php';
/**
* @property int $getter
* @property int $getter2 by ref
* @property int $setter
* @property A\B $both with typehint
* @property int $missing
* @property int $Upper
* @property int $cAse
* @property int $private
* @property int $protected
* @property int $static
* @property-read int $read
* @property-write int $write
* @property-x int $invalid1
* @property $invalid2
* abc @property int $invalid3
*/
class TestClass
{
public function getGetter()
{
}
public function &isGetter2()
{
}
public function setSetter()
{
}
public function getBoth()
{
}
public function setBoth()
{
}
public function getUpper()
{
}
public function getCase()
{
}
private function getPrivate()
{
}
protected function getProtected()
{
}
public static function getStatic()
{
}
public function getRead()
{
}
public function setRead()
{
}
public function getWrite()
{
}
public function setWrite()
{
}
public function getInvalid()
{
}
public function getInvalid2()
{
}
}
Assert::same([], ObjectHelpers::getMagicProperties('stdClass'));
Assert::same([
'getter' => 0b0011,
'getter2' => 0b0101,
'setter' => 0b1000,
'both' => 0b1011,
'Upper' => 0b0011,
'protected' => 0b0011,
'read' => 0b0011,
'write' => 0b1000,
], ObjectHelpers::getMagicProperties('TestClass'));
/**
* @property int $bar
*/
class ParentClass
{
public function getFoo()
{
}
}
/**
* @property int $foo
*/
class ChildClass extends ParentClass
{
public function getBar()
{
}
}
Assert::same([], ObjectHelpers::getMagicProperties('ParentClass'));
Assert::same(['foo' => 0b0011], ObjectHelpers::getMagicProperties('ChildClass'));
|