php trait 自动加载,1010 分级命名空间自动加载,trait类

1. 命名空间类自动加载

2.  trait类命名空间类自动加载

实例

namespace _101002;

//自动加载函数   函数内的参数 $classname 是带路径的类名

//文件类和类名相同

//空间分层 路径 对应 文件名路径

spl_autoload_register(function ($className){

// 去掉命名空间 名称里的下划线

$path = str_replace('_', '', $className);

// 转义 命名空间名称里的 斜杠为 系统路径符

$path = str_replace('\\', DIRECTORY_SEPARATOR, $path);

// 拼接路径

$path = __DIR__ .'/'. $path . '.php';

echo $path;

if (file_exists($path)) include $path;

});

// 路径对应命名空间路径

echo \_101001\Test1::get(), '
';

echo \_101001\_01\Test2::get(), '
';

echo \_101001\_01\_02\test3::get(), '
';

print_r(\_101001\_01\_02\_03\Test4::get());

运行实例 »

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

结果 :

F:\phpstudy_pro\www\app.io\PHPtask\1010/101001\Test1.php _101001\test1类, 加载成功

F:\phpstudy_pro\www\app.io\PHPtask\1010/101001\01\Test2.php _101001\_01\test2类, 加载成功

5625620190a9adf9ec51dbef31cd9bb5.png

注意:文件名 类名 和路径的一致性

—————————————————————————————————————————————trait类

//不依赖继承的 引用方法 类   共享类;

// trait类不能定义常量  可以定义属性和方法

// 用trait类 保存加载数据和加载方法  可以实现自动连接 和 加载数据

// 根据参数 自动调用不同的信息

实例

trait mi

{

static private $ui = '信息不存在';

static function mi1($name){

// 字符串 去除空格,str_replace(' ', '', $name)

// 不区分大小写 addslashes;

// 字符串比较;strcasecmp

if (!strcasecmp(addslashes(str_replace(' ', '', $name)),'p30')) {

return $name;

}else if (!strcasecmp(addslashes(str_replace(' ', '', $name)),'p30pro') ) {

return $name;

}else{

// 测试 属性值调用

return self::$ui;

}

}

}

trait mi2{

static function mi2($name){

return $name;

}

}

//向trait类传递参数

class huwei{

use mi,mi2;

private $mi;

private $mi2;

//接收參數 并向屬性賦值

public function __construct($name, $arguments)

{

$this->mi=$name;

$this->mi2=$arguments;

}

//通过属性值向trait类传递参数  动态调用

function merge(){

// 自动返回 trait类的值,实现自动操作

// 判断返回值是否合法 是否是传进行去的值,决定输出内容格式

if (mi::mi1($this->mi) !==  $this->mi) {

return mi::mi1($this->mi);

}else{

return mi::mi1($this->mi).mi2::mi2($this->mi2);

}

}

// 静态加载 通过直接传参 静态调用

static function mergesta($name, $arguments){

// 判断返回值是否合法 是否是传进出的值 决定输出内容格式

if (mi::mi1($name) !== $name) {

return mi::mi1($name);

}else{

return mi::mi1($name).mi2::mi2($arguments);

}

}

}

//动态调用 对象传参  直接访问 huwei类内的方法

$merge = new huwei('p0pro',' 4899元');

// 动态输出结果

echo $merge->merge();

// 动态输出:p0pro信息不存在

echo '


';

// 静态调用 直接传参  直接访问 huwei类内的方法

echo huwei::mergesta('P30 PRO',' 4899元');

// 静态输出:P30 PRO 4899元

运行实例 »

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值