批改状态:未批改
老师批语:
总结: 类是对象的模板,对象是类的实例
类中的属性一般定义为私有属性,单独创镌读取和修改方法--- 魔术方法 。一切都是为了安全考虑。
类文件,注意的有命名,后面的命名空间,属性以及方法的属性(私有,保护,公共)retun 不超过一个。
实例
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/5/2
* Time: 23:40
*/
class GirlFriendClass
{
//声明属性
private $name;
private $age;
private $stature;
private $data=[];
// 构造方法
public function __construct($name='',$age=0,$stature=[])
{
$this->name = $name;
$this->age = $age;
$this->stature = $stature;
}
//魔术方法: 查询器
public function __get($name)
{
$msg = null;
if(isset($this->$name))
{
$msg = $this->$name;
}elseif(isset($this->data[$name])){
$msg = $this->data[$name];
}else
{
$msg = '无此属性';
}
return $msg;
}
//魔术方法:设置器
public function __set($name,$value)
{
//如果属性存在则直接赋值
if(isset($this->$name))
{
$this->$name = $value;
}else{
//如果属性不存在则创建并抱在到类属性$data中去
$this->data[$name] = $value;
}
}
}
运行实例 »
点击 "运行实例" 按钮查看在线实例调用的
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/5/2
* Time: 23:31
*/
header('Content-type:text/html;charset=utf8');
require'lib/GirlFriendClass.php';
$girlfriend = new GirlFriendClass('浩浩',23,[34,30,90]);
//测试魔术方法_get()
echo '姓名:'.$girlfriend->name.'<br>';
echo '年龄:'.$girlfriend->age.'<br>';
echo '三维:'.var_dump($girlfriend->stature,true).'<br>';
//获取不存在的属性
echo '爱好:'.$girlfriend->hobby.'<br>';
echo'<hr>';
//测试魔术方法__set();
$girlfriend->name = '范冰冰';
$girlfriend->age = 35;
$girlfriend->stature = [35,85,98];
echo '姓名: ',$girlfriend->name,'<br>';
echo '年龄: ',$girlfriend->age, '<br>';
echo '三维: ', print_r($girlfriend->stature,true), '<br>';
$girlfriend->hobby = '舞蹈';
echo '爱好:'.$girlfriend->hobby.'<br>';点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号