分级的命名空间自动加载类-trait类的理解-2019-10-10作业
程序员文章站
2022-03-20 23:09:57
...
一:分级的命名空间自动加载类
代码图:
部分代码:
实例
<?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类 ,可以解决类单继承的问题
上一篇: 抽象类和接口CURD操作-2019-10-09作业
下一篇: 抽象类与接口 20191009
推荐阅读
-
浅析PHP类的自动加载和命名空间
-
PHP类的自动加载与命名空间用法实例分析
-
PHP 进阶篇:面向对象的设计原则,自动加载类,类型提示,traits,命名空间,spl的使用,反射的使用,php常用设计模式 (麦子学员 第三阶段)
-
mvc-php MVC怎么实现自动加载不同命名空间的类?
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
浅析PHP类的自动加载和命名空间
-
速战速决 5 - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 - webabcd
-
速战速决 (5) - PHP: 动态地创建属性和方法, 对象的复制, 对象的比较, 加载指定的文件, 自动加载类文件, 命名空间 - webabcd