批改状态:合格
老师批语:
<?php
class Phone
{
//创建私有属性 private public 公共的 protected 受保护的 var不推荐使用了已经淘汰
private $name='';
private $price=0;
private $model='';
private $data=[];
//魔术方法__construct()该方法是构造方法就是能在对象实例化的时候直接自动调用
//并且一个标准的类中只能有一个构造方法
//一个方法中只能用一个return 否则会警告return 过多
public function __construct($name,$price,$model){
// 初始化构造方法的成员属性
$this->name = $name;
$this ->price = $price;
$this->model = $model;
}
public function sale(){
$msg = '手机名称:'.$this->name.'<br>型号是:'.$this->model.'<br>价格是:'.$this->price;
return $msg;
}
//__get()魔术方法 该方法是获取当前属性是私有属性当值 该方法在同一个类中不能重复只能设置一个
public function __get($name){
$msg = '非法操作';
switch ($name) {
case 'name':
$msg = $this->name;
break;
case 'price':
$msg = $this->price;
break;
case 'model':
$msg = $this->model;
break;
case 'data':
$msg = $this->data;
break;
default:
$msg='属性不存在';
break;
}
return $msg;
}
//魔术方法__set() 该方法是用于设置属性值的魔术方法 类外部创建对象赋值的时候对私有属性的赋值
//该方法有两个参数 参数1是属性名称,参数2是属性值
public function __set($name,$value){
//直接设置属性
//$this->$name=$value;
//判断是否存在该属性如果不存在则保存到数组中
if (isset($this->$name)) {
$this->$name=$value;
} else {
//不存在则存放在这个数组中
$this->data[$name]=$value;
}
}
}
?>点击 "运行实例" 按钮查看在线实例
<?php
//加载文件
require 'Phone.php';
//创建一个对象 当对象创建成功后就会自动执行后构造方法 该方法不能手动调用
$phone = new Phone('三星',4320,'i900');
echo $phone->sale();
echo '<hr>';
//魔术方法__get()测试
echo $phone->name;
echo '<hr>';
echo $phone->price;
echo '<hr>';
echo $phone->model;
//魔术方法__set()
echo $phone->name='奶茶妹妹';
echo $phone->model='y2638';
echo $phone->price=3222;
$phone->luo='ding';
$phone->apple=true;
$phone->orange=123;
$phone->mac='231';
var_dump($phone->data);
?>点击 "运行实例" 按钮查看在线实例

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号