PHP中的对象遍历 traversal(遍历)
通常遍历的是外部可见的public属性 public $var;
语法:
foreach(key=>$value){
//语句
}
traversal.php
<?php
class Demo
{
//在该类中先创建三个公共属性
public $name;
public $age;
public $salary;
private $sex;//私有属性
protected $isMarried;//受保护属性
public static $home;//静态属性
//构造方法使用固定的方法名(名称是固定的):__construct() 构造方法是创建对象时调用
//声明构造方法,用来初始化属性 __construct别写错
public function __construct($name, $age, $salary, $sex, $isMarried, $home)
{
//下面是赋值语句
$this->name = $name;
$this->age = $age;
$this->salary = $salary;
$this->sex = $sex;
$this->isMarried = $isMarried;
self::$home = $home;//对静态属性初始化不能用$this;因为它不属于对象,而属于类要用self::加属性名
}
//访问私有属性和受保护的属性
//声明一个query方法,用来在类的内部遍历属性
public function query()
{
print '遍历出对象中的全部属性,包括私有和受保护的:<br>';
foreach ($this as $key=>$value){
print $key.'=>'.$value.'<br>';
}
//同样在遍历的时候,静态属性无法用循环输出,只能手工的将它打印出来
print self::$home;
}
}
//外部访问
$obj = new Demo('peter',28, 3000, 'male', true, '合肥');
//遍历对象
echo '外部访问公共属性:<br>';
foreach ($obj as $key => $value) {
echo $key.'=>'.$value.'<br>';
}
echo '<hr>';
//在外部也可以访问静态属性,用echo使用类名::$静态属性
echo Demo::$home;//外部使用类名访问静态成员
echo '<hr>';
$obj->query();//遍历出对象中的全部属性
-
效果图
image.png
