批改状态:合格
老师批语:
这一节课主要讲的是类的相关知识,主要是类的声明与实例化,类常量,对象初始化,属性的重载,类中的静态成员与访问
代码
<?php
class Demo1{}
$demo1=new Demo1();
$demo1->name='杨过';
$demo1->sex='男';
$demo1->hello=function (){
return '神雕大侠';
};
echo $demo1->name.':'.$demo1->sex.'<br>';
//echo ($demo1->hello)();
echo call_user_func($demo1->hello);点击 "运行实例" 按钮查看在线实例
预览图

代码
<?php
class Demo2
{//类常量
const SITE_NAME='php中文网';
//私有属性
private $name;
private $age;
private $grade;
//构造方法
public function __construct($name,$age,$grade)
{
$this->name=$name;
$this->age=$age;
$this->grade = $grade;
$this->show();
}
//输出属性内容
public function show()
{
return $this->name.'是'.$this->age.'岁,成绩是: '.$this->grade.'分!';
}
//获取属性的重载
public function __get($name)
{
if($name=='grade'){
return $name.'不允许查看';
}
return $this->$name;
}
//更新属性的重载
public function __set($name,$value)
{
if($name=='grade'){
return $name.'不允许修改';
}
return $this->$name=$value;
}
//属性检测的重载
public function __isset($name)
{
if ($name=='grade'){
return false;
}
return isset($this->$name);
}
//销毁属性的重载
public function __unset($name)
{
if($name=='grade'||$name=='name'){
return false;
}
unset($this->$name);
}
}
//访问类常量
echo '站点名称:'.Demo2::SITE_NAME.'<br>';
//实例化
$demo2=new Demo2('杨过','28','82');
echo $demo2->show();
echo '<hr>';
//获取
echo $demo2->name.'<br>';
echo $demo2->grade.'<br>';
//设置
$demo2->age=30;
echo $demo2->age.'<br>';
//检测
echo isset($demo2->name)?'存在':'不存在';
//销毁
unset($demo2->age);
echo $demo2->age;点击 "运行实例" 按钮查看在线实例
预览图

代码
<?php
class Demo3
{
//父类属性
public $name;
protected $age;
private $salary;
const APP_NAME='学生管理系统';
//父类构造器
public function __construct($name,$age)
{
$this->name=$name;
$this->age=$age;
}
//属性重载
public function __get($name)
{
if(isset($this->$name)){
return $this->$name;
}
return '非法属性';
}
}
class Demo3_1 extends Demo3
{
//子类属性
private $sex;
const APP_NAME='教师管理系统';
//子类将父类同名方法进行重写
public function __construct($name,$age,$sex='男')
{
parent::__construct($name,$age);
$this->sex=$sex;
}
public function __get($name)
{
if (isset($this->$name)) {
return $this->$name;
}
return '非法属性';
}
}
$demo3_1=new Demo3('杨过','60');
echo $demo3_1->name.'<br>';
echo $demo3_1->age.'<br>';
echo $demo3_1->salary.'<br>';
echo Demo3_1::APP_NAME.'<br>';
echo $demo3_1->sex;点击 "运行实例" 按钮查看在线实例
预览图
![1536042375878596.png 8L]`A%CNPBEJYNX0]@4(YWV.png](https://img.php.cn//upload/image/117/225/420/1536042375878596.png)
代码
<?php
class Demo4
{
public static $name='杨过';
public static function may(){
return self::$name;
}
}
echo Demo4::may();点击 "运行实例" 按钮查看在线实例
预览图
![1536042428556043.png $)D_%$T]1_2RDLB__D@[4M6.png](https://img.php.cn//upload/image/599/707/614/1536042428556043.png)
总结
1、类声明: class;类的实例化: new;对象成员的访问:->
2、属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用,属性重载涉及四个方法:__get(),__set(),__isset(),__unset()
3、继承使用关键字: extends,子类可以将父类中的公共和受保护成员全部继承
4、静态属性必须使用类来访问,而静态方法即可以用类,也可以用对象访问
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号