Correction status:qualified
Teacher's comments: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(), '<br>'; echo \_101001\_01\Test2::get(), '<br>'; echo \_101001\_01\_02\test3::get(), '<br>'; 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类, 加载成功
注意:文件名 类名 和路径的一致性
—————————————————————————————————————————————
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 '<hr>'; // 静态调用 直接传参 直接访问 huwei类内的方法 echo huwei::mergesta('P30 PRO',' 4899元'); // 静态输出:P30 PRO 4899元
点击 "运行实例" 按钮查看在线实例