美文网首页
根据文件夹优先顺序来进行类的自动加载

根据文件夹优先顺序来进行类的自动加载

作者: wangjunmech | 来源:发表于2018-08-21 09:45 被阅读0次

    定义常量,三个目录:优先加载BASEPATH中的,如果没有再加载APPPATH,如果再没有再加载OT中的

    方法1:*********************************************

    ```

    spl_autoload_register(function ($class_name) {

    if(file_exists(BASEPATH.$class_name . '.php')){

    require_onceBASEPATH.$class_name . '.php';

    }else if(file_exists(APPPATH.$class_name . '.php')) {

    require_onceAPPPATH.$class_name . '.php';

    }else{

    require_onceOT.$class_name . '.php';

    }

    });

    ```

    方法2:*********************************************

    ```

    spl_autoload_register(function ($class_name) {

    foreach(array(BASEPATH,APPPATH,OT) as $path){

    // echo $path;S

    if(file_exists($path.$class_name . '.php')){

    require_once $path.$class_name . '.php';

    return;

    }

    }

    });

    类参考测试

    class Test

    {

    function cname()

    {

    echo dirname(__FILE__).'=====>>>>>>>'.__CLASS__.'===='.__FILE__;

    }

    }

    …………

    调用测试:

    $cat = new cat();

    $cat->cname();

    echo '
    ';

    $dog = new dog();

    $dog->cname();

    echo '
    ';

    $test = new test();

    $test->cname();

    ```

    方法3:有命名空间的类自动加载***********************************************

    ```

    const BASEPATH="./namespacefoder/";

    const APPPATH="";

    const OT="";

    spl_autoload_register(function ($class_name){

    $pos=strripos($class_name,'\\');

    $class_name=substr($class_name,$pos);

    echo 'CLASS NAME======'.$class_name.'
    ';

    foreach(array(BASEPATH,APPPATH,OT) as $path){

    if(file_exists($path.$class_name . '.php')){

    require_once $path.$class_name . '.php';

    return;

    }

    }

    });

    $t =  new test();//加载不带命名空间的类

    $t ->w();

    $d =  new dogns\oop\wj\dog();//加载有命名空间的类

    $d ->w();

    $f =  new fishns\oop\wj\fish();//加载有命名空间的类

    $f ->w();

    $b =  new birdns\oop\wj\bird();//加载有命名空间的类

    $b ->w();

    $fs =  new flash\oop\wj\flash();//加载有命名空间的类

    namespace flash\oop\wj;

    const ACT='
    flash CAN lighting in the light
    ';

    // define('ACT','
    FISH CAN SWIMING===8888
    ');

    class Flash

    {

    function w(){

    echo ACT;

    }

    }

    相关文章

      网友评论

          本文标题:根据文件夹优先顺序来进行类的自动加载

          本文链接:https://www.haomeiwen.com/subject/cbldiftx.html