|
|
@ -1,48 +1,52 @@
|
|
|
|
<?php
|
|
|
|
<?php
|
|
|
|
namespace LaneWeChat;
|
|
|
|
namespace LaneWeChat;
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
|
|
|
|
* 自动载入函数
|
|
|
|
* 自动载入函数
|
|
|
|
* Created by Lane.
|
|
|
|
* Created by Lane.
|
|
|
|
* User: lane
|
|
|
|
* User: lane
|
|
|
|
* Date: 14-10-15
|
|
|
|
* Date: 14-10-15
|
|
|
|
* Time: 下午6:13
|
|
|
|
* Time: 下午6:13
|
|
|
|
* 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请求到微信服务器
|
|
|
|
|