zoukankan      html  css  js  c++  java
  • PHP之__aotoload()自动加载机制

      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
  • 相关阅读:
    题解:SPOJ1026 Favorite Dice
    机器学习笔记
    机器学习第二次作业
    机器学习第一次作业
    2019软工实践总结作业
    软工2019作业6——软件评测
    2019软工作业五-实现师门树
    软件工程 “校园汇” 个人IDEA竞选分析与总结
    软工2019作业四
    软工2019作业三
  • 原文地址:https://www.cnblogs.com/sharecorner/p/6122998.html
Copyright © 2011-2022 走看看