专业的编程技术博客社区

网站首页 > 博客文章 正文

30、php处理命名空间的类加载器(php 命名空间 通俗易懂)

baijin 2024-09-12 11:21:16 博客文章 6 ℃ 0 评论

1、文件目录结构

  • 目录文件
  • 说明

2、文件源码如下

  • 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、执行结果

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表