登录  /  注册
博主信息
博文 37
粉丝 0
评论 0
访问量 31128
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
类的声明与实例化,类常量,对象初始化,属性的重载,类中的静态成员与访问--2018年9月4日14时18分
新竹网络_Terry的博客
原创
732人浏览过

这一节课主要讲的是类的相关知识,主要是类的声明与实例化,类常量,对象初始化,属性的重载,类中的静态成员与访问

代码


实例

<?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);

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

CS(ORW1OU`6U6KCEGC`3TFA.png

代码


实例

<?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;

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

JFXZJ9%R942B_1P{D_SEE`M.png

代码


实例

<?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;

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

8L]`A%CNPBEJYNX0]@4(YWV.png

代码


实例

<?php
class Demo4
{
    public static $name='杨过';
    public static function may(){
       return self::$name;
    }
}
echo Demo4::may();

运行实例 »

点击 "运行实例" 按钮查看在线实例

预览图

$)D_%$T]1_2RDLB__D@[4M6.png

总结

1、类声明: class;类的实例化: new;对象成员的访问:->

2、属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用,属性重载涉及四个方法:__get(),__set(),__isset(),__unset()

3、继承使用关键字: extends,子类可以将父类中的公共和受保护成员全部继承

4、静态属性必须使用类来访问,而静态方法即可以用类,也可以用对象访问


批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学