class User { public $name; public $age; } 基于这个类编写程序: $User = new User(); $User->name = "Kingmax"; $User->age = 30; foreach($User as $key=>$value){ echo $key.":".$value."\n"; } 以上例程会输出: name:Kingmax age:30 如果我要以上例程输出的结果变成: 姓名:Kingmax 年龄:30 要求只能改User类的代码,不能改执行部分的代码,请问如何实现?
时间: 2024-04-13 18:24:39 浏览: 192
user_inherit:用户继承
要实现输出结果为“姓名:Kingmax”和“年龄:30”,可以在User类中重写__get()方法。__get()方法会在访问不存在或不可访问的属性时被调用。
以下是修改后的User类代码:
class User
{
public $name;
public $age;
public function __get($property)
{
if ($property === 'name') {
return '姓名:'.$this->name;
} elseif ($property === 'age') {
return '年龄:'.$this->age;
}
}
}
$User = new User();
$User->name = "Kingmax";
$User->age = 30;
foreach($User as $key=>$value){
echo $key.":".$value."\n";
}
运行以上代码,输出结果将为:
姓名:Kingmax
年龄:30
通过重写__get()方法,我们可以在访问属性时对其进行处理,并返回自定义的结果。在这个例子中,我们在访问name属性时返回“姓名:”加上实际的name值,在访问age属性时返回“年龄:”加上实际的age值。这样就实现了输出结果的要求。
阅读全文