php根据命名空间自动加载,PHP 命名空间自动加载与实现

Blessing Skin Server 也经过蛮长时间的开发了,但是类文件都只是简单的堆放在同一个文件夹中。虽然我知道有命名空间这玩意,但是总共就几个类,也不是很有必要。

然而在上周加入了数据对接之后,includes 文件夹就开始爆满了:

68f490307b15de1239a4f246886e9499.png

这尼玛还怎么忍?必须命名空间走起啊。

然而我只是知道有这玩意,在框架里也用过,但是并不知道如何实现对其的自动加载。

于是我去网上看了一些自动加载的实例,然后自己写了一个自动加载。说实话刚看到的时候还是有点迷的,所以在这里记录一下。由于我的项目是用类名与文件名相同的方式来组织存储的,所以就懒得管 PSR-4 啦(笑)。

__autoload 是 PHP 的魔术方法,具体请查看官方文档。

使用了命名空间之后,__autoload 函数得到的 $classname 参数值(即需要被加载的类名)就会类似于这样 Database\AuthmeDatabase,而我们要做的,就是把用 \ 组织的带命名空间类名转换为 目录 + 类名 + 文件后缀。

$filename = $include_dir.str_replace('\\', DIRECTORY_SEPARATOR, $classname) . '.class.php';

这样就可以得到文件的绝对路径了:

E:\wwwroot\blessing-skin-server\includes\classes\Database\AuthmeDatabase.class.php

然后 require_once 一下就完成了自动加载。

39a96c468a72e535c85c2a602a7ae1ed.png

神清气爽

5d29d24c99176ba1ac204a9b78b25275.png

参考链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值