php类代码如下
<?php
class lei
{
// 声明类属性
public $name = '';
//这种声明可以直接访问调用
private $age = 18;
//私密的,调用需要端口
private $grade = 66;
private $data=[];
//构建类方法
public function __construct($name = '',$age = 18,$grade = 66)
{
$this->name = $name;
$this->age = $age;
$this->grade = $grade;
}
//魔术方法:查询器__get()
public function __get($age){
// 检测访问不存在的值给出提示
$msg = null;
if(isset($this->$age)){
$msg=$this->$age;
} elseif (isset($this->data[$age])) {
$msg = $this->data[$age];
} else {
$msg = '无此属性';
}
return $msg;
}
//魔术方法:设置器———set()
public function __set($grade, $value)
{
//完善设置器,实现对不存在属性的创建
//如果访问的是已存在的属性,则直接输出
if (isset($this->$grade)) {
$this->$grade = $value;
} else {
//如果属性不存在,则创建它并保存到类属性$data数组中
$this->data[$grade] = $value;
}
}
}调用代码如下
<?php
require '作业30.php';
$lei = new lei('赵雷',20,90);
//测试——get()方法
echo '姓名:'.$lei->name.'<br>';
echo '年龄:'.$lei->age.'<br>';
echo '成绩:'.$lei->grade.'<br>';
echo '爱好:'.$lei->hobby.'<br>';
//不存在属性
//测试-set()方法
$lei->name = '韩梅梅';
$lei->age = '21';
$lei->grade = '89';
//给一个不存在属性
$lei->hobby= '赵雷';
echo '姓名:'.$lei->name.'<br>';
echo '年龄:'.$lei->age.'<br>';
echo '成绩:'.$lei->grade.'<br>';
echo '爱好:'.$lei->hobby.'<br>';
echo '用户自定义属性<pre>'.print_r($lei->data,true).'</pre>';样式如下
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号