2、案例1目录名称

/data/api/study/3、干系知识点

文件名8、类加载器.php 其源码如下

<?php

/

php空间的加载器29php类加载器实现 HTML

Copyright(C) Iamasb

@project : 3、workerman干系知识点

@explain : 类加载器

@filename : 8、类加载器.php

@author : Iamasb

/

class Load

{

/

文件格式常量

/

const PREFIX = \公众.php\"大众;

/

处理类文件加载的核心方法

@param $className

@return bool

/

public static function toDo($className)

{

echo $className,PHP_EOL;

exit;

}

}

spl_autoload_register('Load::toDo');

// 测试代码

$test = new TestClass();

实行结果

总结

从这个例子中,可以看出,当注册类加载器后,在当前文件中实例化任何类时,都会触发类加载器的方法。
并获取类名。
也便是说,如果我们知道类所在的目录位置,那么我们就可以\"大众包含\公众此类的代码信息,到当前的实行环境里面了

3、案例2新增类文件TestClass.php,其源码如下:

<?php

/

Copyright(C) Iamasb

@project : 3、workerman干系知识点

@explain : 类加载器,被加载的测试类

@filename : TestClass.php

@author : Iamasb

/

class TestClass

{

public function func()

{

echo 'hello world',PHP_EOL;

}

}

修正类加载器的回调方法

public static function toDo($className)

{

// echo $className,PHP_EOL;

// exit;

$file = __DIR__.DIRECTORY_SEPARATOR.$className.self::PREFIX;

if (!file_exists($file)) {

die($className.\公众 is not exits.\"大众);

}

if (!class_exists($className,false)) {

include_once $file;

}

return true;

}

再修正测试代码

$test = new TestClass();

$test->func();

再次实行