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

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

作者: 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;

}

}

相关文章

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

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

  • 根据文件夹优先顺序--自动加载类

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

  • 关于class loader的加载问题

    class loader加载并非是在程序开始时将所有的类文件加载进去,而是根据需要进行动态加载, 具体加载顺序如上...

  • java类初始化顺序

    原则 变量优先于块、静态变量优先于非静态 父类优先于派生类初始化 按照成员变量定义的顺序来进行初始化,即使变量定义...

  • Soul源码阅读 插件加载解析【第十二天】

    Soul中各个模块是按照插件进行加载的,插件有对应的优先级,会按照优先级排序然后顺序进行执行对应的插件进行处理请求...

  • 从零开始打造自己的PHP框架——第1章

    目标 本篇,我们来实现类库自动加载,以及路由解析。 类库自动加载 常规加载 常规加载一般使用include或者re...

  • java-类加载机制

    JVM的类加载是通过ClassLoader及其子类来完成的,类的层次关系和加载顺序可以由下图来描述: a. ...

  • 21. java虚拟机总结-类的加载机制(四)

    类的加载过程 大多数情况下,类会按照图中给出的顺序进行加载 加载 从jar包或war包找到并加载.class文件的...

  • JVM类加载机制

    JVM类结构类加载类执行 类加载的五个过程:加载、验证、准备、解析、初始化。 加载: 根据全限定名来获取定义类的二...

  • JVM类加载入门

    一 类加载顺序 class类加载-->验证-->准备--->解析--->初始化 class类加载:通过类加载器加载...

网友评论

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

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