php网站开发范例(php处理命名空间的类加载器)
php网站开发范例(php处理命名空间的类加载器)require_once "Load.php"; */ * @explain : 测试文件入口 * @filename : index.php * @author : Iamasb
1、文件目录结构- 目录文件
- 说明
- index.php
<?php
/**
* Copyright(C) Iamasb
* @project : 3、workerman相关知识点
* @explain : 测试文件入口
* @filename : index.php
* @author : Iamasb
*/
require_once "Load.php";
// 通过use引入类
use name1\NameClass;
$nc = new NameClass();
$nc->func();
$tc = new TestClass();
$tc->func();
- Load.php
<?php
/**
* Copyright(C) Iamasb
* @project : 3、workerman相关知识点
* @explain : 处理命名空间的类加载器
* @filename : Load.php
* @author : Iamasb
*/
class Load
{
/**
* 文件格式常量
*/
const PREFIX = ".php";
/**
* 命名空间名称
*/
const NAME = "name1";
/**
* 处理类文件加载的核心方法
* @param $className
* @return bool
*/
public static function toDo($className)
{
$className = str_replace('\\' DIRECTORY_SEPARATOR $className);
$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;
}
}
spl_autoload_register("Load::toDo");
- 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;
}
}
- NameClass.php
<?php
/**
* Copyright(C) Iamasb
* @project : 3、workerman相关知识点
* @explain : 类加载器 被加载的测试类
* @filename : TestClass.php
* @author : Iamasb
*/
namespace name1;
class NameClass
{
public function func()
{
echo 'hello I am nameClass->func' PHP_EOL;
}
}
3、执行结果