отражение — PHP: получить список всех свойств класса (открытых и закрытых) без создания экземпляра класса

У меня есть POPO (обычный старый объект PHP):

namespace App\Objects;

class POPO  {
private $foo;
private $bar;

// getters and setters //
}

В другом месте у меня есть класс (Details — то, что делает класс, неважно), который должен знать имена свойств POPO. POPO не передается в этот класс, и при этом этот класс не создает экземпляр POPO и не заботится о значениях его свойств.

class POPODetails  {
private $POPOclassName = "App\Object\POPO";  //determined programatically elsewhere.

public getProperties(): array  {
return get_class_vars($this->POPOClassName);  //this will only return public properties.
}
}

Использовать get_object_vars Мне нужно было бы передать экземпляр объекта, который мне не нужен в противном случае, и все равно получил бы только открытые свойства. Я мог бы использовать ReflectionClass::getProperties(), но также необходимо передать экземпляр объекта.

Итак, есть ли способ получить список классов, используя только Полное имя класса?

0

Решение

Вы все еще можете использовать ReflectionClassphp.net сообщает нам следующее об аргументе конструктора:

Либо строка, содержащая имя класса для отражения, либо объект.

так

<?php

class SomeClass
{
private $member;

private $othermember;
}

$cls = new ReflectionClass( SomeClass::class );
print_r( $cls->getProperties() );

напечатает:

Array
(
[0] => ReflectionProperty Object
(
[name] => member
[class] => SomeClass
)
[1] => ReflectionProperty Object
(
[name] => othermember
[class] => SomeClass
)
)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]