Correction status:qualified
Teacher's comments:
<?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); ?>
点击 "运行实例" 按钮查看在线实例