在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 类文件加载机制。 2 按需加载。 3 也叫自动加载机制。 4 5 不同模块下同时使用同一个类文件 会出现多次加载。 6 7 统一把类文件加载到一个文件中 但是 会出现不使用的类文件 8 9 这个时候php内部出现了自动加载机制。 10 11 自动加载机制的要求是: 12 当需要某个类文件时候 13 未定义 14 15 16 自动加载函数:__autoload()函数 17 18 好处是:实现按需加载。一个类一旦被加载到内存中就不会在加载啦。 19 20 class Test{ 21 22 public function __autoload($class_name){ //时候时候执行,是在程序需要类文件的时候,php内部会自动调用该函数 23 //当需要某个类文件时,只需传入类名即可 24 require './'.$class_name.'.class.php'; 25 } 26 } 27 28 29 自动加载业务逻辑核心, 确定类文件与类文件地址对应关系 30 demo: 31 Tool: 32 ImageTool.class.php 33 FileTool.class.php 34 Core: 35 LibCore.class.php 36 DbCore.class.php 37 38 public function __autoload($class_name){ 39 40 // 第一种 自动加载映射列表 41 $class_list=array( 42 'LibCore'=>'./LibCore.class.php', 43 'DbCore'=>'./DbCore.class.php', 44 //'类名'=>'文件地址' 45 ); 46 47 //先判断类文件是否存在映射列表中 48 if(isset($class_list[$class_name])){ 49 require $class_list[$class_name]; //直接加载即可 。效率高。 50 } 51 52 //第二种就是 映射列表+规律可循的进行混合 53 54 //需要判断传入进来的$class_name 对应的类文件存储在什么位置 55 if('core' == substr($class_name,-4)){ //获取类名字中的后四位 56 require './'.$class_name.'class.php'; 57 }elseif('Tool' == substr($class_name, -4)){ 58 require './'.$class_name.'class.php'; 59 } 60 } 61 62 63 自定义类文件自动加载 64 65 用到一个函数:spl_autoload_register('自动加载的函数名称') 66 67 因为项目需求 可以会出现多个自动加载,在各个模块开发中 68 以及在第三方的模块中也可能用到,所以用户自定义自动加载函数是非常方便的 69 70 demo: 71 Tool: 72 ImageTool.class.php 73 FileTool.class.php 74 Core: 75 LibCore.class.php 76 DbCore.class.php 77 78 spl_autoload_register('myAutoload'); //自定义自动加载 79 public function myAutoload($class_name){ 80 81 // 第一种 自动加载映射列表 82 $class_list=array( 83 'LibCore'=>'./LibCore.class.php', 84 'DbCore'=>'./DbCore.class.php', 85 //'类名'=>'文件地址' 86 ); 87 88 //先判断类文件是否存在映射列表中 89 if(isset($class_list[$class_name])){ 90 require $class_list[$class_name]; //直接加载即可 。效率高。 91 } 92 93 //第二种就是 映射列表+规律可循的进行混合 94 95 //需要判断传入进来的$class_name 对应的类文件存储在什么位置 96 if('core' == substr($class_name,-4)){ //获取类名字中的后四位 97 require './'.$class_name.'class.php'; 98 }elseif('Tool' == substr($class_name, -4)){ 99 require './'.$class_name.'class.php'; 100 } 101 } 102 103 trigger-error
|
2022-07-18
2022-08-16
2022-11-06
2022-07-29
2022-08-18
请发表评论