博主信息
博文 33
粉丝 0
评论 0
访问量 30359
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
类与对象进阶知识(匿名类、Trait、自动加载、序列化)20180905 23:00
EmonXu的博客
原创
894人浏览过

类与对象的进阶知识,是需要掌握的。

如下代码演示匿名类、Trait、自动加载、序列化。

实例

<?php

//1. 编程: 匿名对象与匿名类的实现过程;

class Player{
    private $name='james';

    public function belongto($team){
        return $this->name.'属于'.$team;
    }
}

echo (new Player())->belongto('湖人'),'<br>';

echo (new class{
    private $name='curry';

    public function belongto($team){
        return $this->name.'属于'.$team;
    }
})->belongto('勇士'),'<hr>';

//2. 编程: Trait类的声明与工作原理;
//原理:PHP不支持多重继承,为了代码复用,引入trait,优先级:自身方法>trait的方法>继承的方法
trait Player1{
    private $name='钓鱼岛';

    public function belongto($team){
        return $this->name.'永远属于'.$team;
    }
}

trait Player2{
    private $name1='苍老师';

    public function belongto($team){
        return $this->name1.'不只属于'.$team;
    }
}

class Player3{
    use Player1,Player2 {
        Player1::belongto insteadof Player2;
        Player2::belongto as belongto1;
    }
}

ECHO (NEW Player3())->belongto('中国'),'<br>';
ECHO (NEW Player3())->belongto1('日 本'),'<hr>';

//3. 编程: 类的自动加载函数的写法;

spl_autoload_register(function ($className){
    require './class/'.$className.'.php';
    //存在命名空间的情况下

//    $className = str_replace("\\","/", $className);
//    require './class/'.$className.'.php';
});

//4. 编程: 对象的序列化与反序列化的原理与应用;

$obj = new player();
/**
 * 对象序列化的特点:
 * 1. 只保存对象中的属性,不保存方法
 * 2. 只保存类名,不保存对象名
 */

echo serialize($obj),'<hr>';
$tmp = serialize($obj);
var_dump(unserialize($tmp));

运行实例 »

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


对于面向对象的理解:

面向对象是相对于面向过程而言的,面向过程是一步步的做,面向对象是将面向过程进一步抽象,提取出类、对象和方法,提高了代码的可复用性,面向对象三要素封装、继承、多态。

批改状态:未批改

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

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

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