كيفية الحصول على الخصائص العامة لفئة؟
-
19-09-2019 - |
سؤال
لا أستطيع استخدام ببساطة get_class_vars()
لأنني بحاجة إلى العمل مع إصدار PHP أقدم من 5.0.3 (انظر http://pl.php.net/get_class_vars. سجل التغيير)
بدلا من ذلك: كيف يمكنني التحقق مما إذا كانت الممتلكات عامة؟
المحلول
هذا ممكن باستخدام الانعكاس.
<?php
class Foo {
public $alpha = 1;
protected $beta = 2;
private $gamma = 3;
}
$ref = new ReflectionClass('Foo');
print_r($ref->getProperties(ReflectionProperty::IS_PUBLIC));
النتيجه هي:
Array
(
[0] => ReflectionProperty Object
(
[name] => alpha
[class] => Foo
)
)
نصائح أخرى
أو يمكنك القيام بذلك:
$getPublicProperties = create_function('$object', 'return get_object_vars($object);');
var_dump($getPublicProperties($this));
يمكنك جعل صفك تنفذ واجهة Iteratoragion
class Test implements IteratorAggregate
{
public PublicVar01 = "Value01";
public PublicVar02 = "Value02";
protected ProtectedVar;
private PrivateVar;
public function getIterator()
{
return new ArrayIterator($this);
}
}
$t = new Test()
foreach ($t as $key => $value)
{
echo $key." = ".$value."<br>";
}
هذا سوف يخرج:
PublicVar01 = Value01
PublicVar02 = Value02
لا تنتمي إلى StackOverflow