Php 如何遍历当前类属性(不是从父类或抽象类继承的)?
我知道PHP5将允许您迭代类的属性。但是,如果该类扩展了另一个类,那么它也将包括父类中声明的所有属性。没关系,没什么可抱怨的 但是,我始终将SELF理解为指向当前类的指针,而$this也指向当前对象(包括从父对象继承的内容) 是否有任何方法可以只遍历当前类的属性。我问这个的原因。。。。我正在使用CI并遍历$this,其中包括大量我不需要的父属性Php 如何遍历当前类属性(不是从父类或抽象类继承的)?,php,class,properties,iteration,Php,Class,Properties,Iteration,我知道PHP5将允许您迭代类的属性。但是,如果该类扩展了另一个类,那么它也将包括父类中声明的所有属性。没关系,没什么可抱怨的 但是,我始终将SELF理解为指向当前类的指针,而$this也指向当前对象(包括从父对象继承的内容) 是否有任何方法可以只遍历当前类的属性。我问这个的原因。。。。我正在使用CI并遍历$this,其中包括大量我不需要的父属性 <?php class parent { public $s_parent = "Parent sez hi!"; public
<?php
class parent
{
public $s_parent = "Parent sez hi!";
public $i_lucky_number = 6;
}
class child extends parent
{
public $s_child = "Child sez hi!";
public $s_foobar = "What What!!";
public $i_lucky_number = 7;
public iterate()
{
foreach ($this as $s_key => $m_val)
{
echo "$s_key => $m_val<br />\n";
}
}
}
$o_child = new child();
$o_child->iterate()
我不想看到“s_parent=>parent sez hi!”
我只想遍历当前类的属性。不是那些在别处继承的
提前感谢。使用反射方法,您可以执行以下操作:
public function iterate()
{
$refclass = new ReflectionClass($this);
foreach ($refclass->getProperties() as $property)
{
$name = $property->name;
if ($property->class == $refclass->name)
echo "{$property->name} => {$this->$name}\n";
}
}
看起来不错。还没来得及测试。我会再打给你的。那父类中的
private$variable
呢??!!伊姆霍,杰西卡在评论中更清晰的回答。
public function iterate()
{
$refclass = new ReflectionClass($this);
foreach ($refclass->getProperties() as $property)
{
$name = $property->name;
if ($property->class == $refclass->name)
echo "{$property->name} => {$this->$name}\n";
}
}