PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 分级的命名空间自动加载类-trait类的理解-2019-10-10作业

分级的命名空间自动加载类-trait类的理解-2019-10-10作业

零度 的博客
零度 的博客 原创
2019年10月15日 11:42:14 777浏览

一:分级的命名空间自动加载类

代码图:

1.jpg

部分代码:

实例

<?php
namespace _1010;
use _1010\t2\test2;//
use _1010\t3\test3;

spl_autoload_register(function ($className){
    $path = str_replace('_1010'.'\\',DIRECTORY_SEPARATOR,$className);
    $path = str_replace('\t2'.'',DIRECTORY_SEPARATOR,$path);
    $path = str_replace('\t3'.'',DIRECTORY_SEPARATOR,$path);

    $path = __DIR__.'/'.$path.'.php';
//die($path);
    include  $path;
});

echo test1::get();
echo '<br>';
echo test2::get();
echo '<br>';
echo test3::get();

运行实例 »

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

二:trait类的理解

实例

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019\10\15 0015
 * Time: 10:42
 */

class fu
{
    public function a()
    {
        echo '我是父类的a'.'<br>';
    }
    public function b()
    {
        echo '我是父类的b'.'<br>';
    }
    public function c()
    {
        echo '我是父类的c'.'<br>';
    }
}

// 不直接变动父类, 通过 traits 增加新的方法集, 或修改父类方法
trait traits
{
    public function a()
    {
        echo '我是trait的a'.'<br>';
    }
    public function b()
    {
        echo '我是trait的b'.'<br>';
    }

}
//子类
class zi extends fu
{
    // 引入trait类
    use traits;
    public function a()
    {
        echo '我是子类的a'.'<br>';
    }

}

$boj = new zi();
//方法的优先级为 : 子类覆盖 --->trait类覆盖  ---> 父类
$boj->a();
$boj->b();
$boj->c();

运行实例 »

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

总结:

空间自动加载类引入的时候,没有写别名,就使用类名调用

trait类方法的优先级为 : 子类覆盖 --->trait类覆盖  ---> 父类,子类中使用use关键字引入trait类 ,可以解决类单继承的问题

上一条: 2019100802 下一条: aes加密简单使用
php
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议