面向对象的进阶内容 20191010

2019年10月11日 17:20:53阅读数:360博客 / 阿乎乎的学习 / 学习

第一个知识点   接口常量,接口常量和类常量类似,也是用const来定义,

第二个知识点  后期静态绑定(延迟静态绑定),绑定是在代码运行是发生的。静态继承的上下文环境中,调用子类重新的静态方法,使用关键词static代替self。

第三个知识点 命名空间的分级管理

第三个知识点  trait是为了解决子类只能继承一个父类单继承机制,在宿主类中引用trait类,使用use traitName就可以使用

作业一:写一个分级的命名空间, 并实现类的自动加载

实例

<?php
namespace __1010;
spl_autoload_register(function($className){
    $path=str_replace('\\',DIRECTORY_SEPARATOR,$className);
    $path=__DIR__.DIRECTORY_SEPARATOR.$path.'.php';
    include $path;
});
//类的别名使用use \__NAMESPACE__\className as Name 来定义,use默认是从根空间开始的,因此最前面的\可以省略。如果省略了Name,那么类的别名就是类名,as定义放置空间命名冲突
use config\inc\text1;
use config\inc\text2;
use config\demo1;
use config\demo2;
use inc\test1;
use inc\test2 as test2;
//测试结果,输出的都是类名下的text()方法,加载成功。
echo text1::text().'<br>';
echo text2::text().'<br>';
echo demo1::text().'<br>';
echo demo2::text().'<br>';
echo test1::text().'<br>';
echo test2::text();

运行实例 »

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

2222.png


作业二: 写一个trait类, 理解它的功能与使用场景

实例

//创建一个返回姓名和年龄的trait类
trait info{
    public $name;
    public $age;
    public function info(){
        return '我名字是'.$this->name.',年龄是'.$this->age;
    }
}
//创建一个返回地址和电话的trait类
trait address{
    public $address;
    public $phone;
    public function ainfo(){
        return '我家住在'.$this->address.',我的电话是'.$this->phone;
    }
}
//创建类来继承方法,最后返回信息
class getInfo{
    use info;
    use address;
    public function __construct($name,$age,$phone,$address)
    {
        $this->phone=$phone;
        $this->name=$name;
        $this->age=$age;
        $this->address=$address;
    }
    public function getInfo(){
        return $this->info().$this->ainfo();
    }
}
echo '<br>';
$info=new getInfo('小新',18,13598653541,'重庆市渝北区万寿山');
echo $info->getInfo();

运行实例 »

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



Trait类是为了解决子类只能继承一个父类而生的,这样子类就可以继承多个trait类的属性和方法,更加灵活多变。

批改状态:合格

老师批语:trait只是提供了另一种选择罢了, 目前在开发过程 , 并未被足够重视,也未大量使用

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
    阿乎乎的学习
    博文
    30
    粉丝
    1
    评论
    0
    访问量
    14753
    积分:0
    P豆:60