Update autoloader.php

src
pfspx4a7z 6 months ago
parent 0841725b98
commit 8077c40a06

@ -1,7 +1,6 @@
<?php <?php
namespace LaneWeChat; namespace LaneWeChat;
/** /**
*
* 自动载入函数 * 自动载入函数
* Created by Lane. * Created by Lane.
* User: lane * User: lane
@ -10,39 +9,44 @@ namespace LaneWeChat;
* E-mail: lixuan868686@163.com * E-mail: lixuan868686@163.com
* WebSite: http://www.lanecn.com * WebSite: http://www.lanecn.com
*/ */
class Autoloader{ class Autoloader {
const NAMESPACE_PREFIX = 'LaneWeChat\\'; const NAMESPACE_PREFIX = 'LaneWeChat\\'; // 定义命名空间前缀
/** /**
* 向PHP注册自动载入函数 * 向PHP注册自动载入函数
*/ */
public static function register(){ public static function register() {
// 注册自动载入函数,当尝试实例化一个未定义的类时,将调用此函数
spl_autoload_register(array(new self, 'autoload')); spl_autoload_register(array(new self, 'autoload'));
} }
/** /**
* 根据类名载入所在文件 * 根据类名载入所在文件
* @param $className 类名
*/ */
public static function autoload($className){ public static function autoload($className) {
// 获取命名空间前缀的长度
$namespacePrefixStrlen = strlen(self::NAMESPACE_PREFIX); $namespacePrefixStrlen = strlen(self::NAMESPACE_PREFIX);
if(strncmp(self::NAMESPACE_PREFIX, $className, $namespacePrefixStrlen) === 0){ // 检查类名是否以命名空间前缀开头
if (strncmp(self::NAMESPACE_PREFIX, $className, $namespacePrefixStrlen) === 0) {
// 将类名转换为小写
$className = strtolower($className); $className = strtolower($className);
// 将命名空间分隔符转换为目录分隔符
$filePath = str_replace('\\', DIRECTORY_SEPARATOR, substr($className, $namespacePrefixStrlen)); $filePath = str_replace('\\', DIRECTORY_SEPARATOR, substr($className, $namespacePrefixStrlen));
// 构建文件路径
$filePath = realpath(__DIR__ . (empty($filePath) ? '' : DIRECTORY_SEPARATOR) . $filePath . '.lib.php'); $filePath = realpath(__DIR__ . (empty($filePath) ? '' : DIRECTORY_SEPARATOR) . $filePath . '.lib.php');
if(file_exists($filePath)){ // 如果文件存在,则加载文件
if (file_exists($filePath)) {
require_once $filePath; require_once $filePath;
}else{ } else {
// 如果文件不存在,输出文件路径
echo $filePath; echo $filePath;
} }
} }
} }
} }
命名空间声明namespace LaneWeChat\Core; 定义了类的命名空间表明这个类属于LaneWeChat模块的核心部分。 命名空间声明namespace LaneWeChat; 定义了类的命名空间表明这个类属于LaneWeChat模块。
类定义class Menu 定义了一个用于管理微信自定义菜单的类。 类定义class Autoloader 定义了一个用于自动加载类文件的类。
setMenu方法用于创建自定义菜单。处理菜单数据将一维数组转换为树形结构支持子菜单并发送POST请求到微信服务器。 常量定义const NAMESPACE_PREFIX = 'LaneWeChat\\'; 定义了命名空间前缀,用于识别类名。
getMenu方法用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。 register方法注册自动载入函数当尝试实例化一个未定义的类时将调用 autoload 方法。
delMenu方法用于删除当前公众号的自定义菜单。发送GET请求到微信服务器 autoload方法根据类名载入所在文件。检查类名是否以命名空间前缀开头如果是则构建文件路径并加载文件。如果文件不存在则输出文件路径。
命名空间声明namespace LaneWeChat\Core; 定义了类的命名空间表明这个类属于LaneWeChat模块的核心部分。
类定义class Menu 定义了一个用于管理微信自定义菜单的类。
setMenu方法用于创建自定义菜单。处理菜单数据将一维数组转换为树形结构支持子菜单并发送POST请求到微信服务器。
getMenu方法用于获取当前公众号的自定义菜单信息。发送GET请求到微信服务器。
delMenu方法用于删除当前公众号的自定义菜单。发送GET请求到微信服务器
Loading…
Cancel
Save