everton3x / librarian
PHP库导入器,类似于Python导入系统。
This package is auto-updated.
Last update: 2020-03-19 17:04:29 UTC
README
一个PHP库导入器,类似于Python导入系统。
librarian做什么?
librarian提供了一种选择性地自动包含具有函数(或任何其他PHP代码,包括类)的文件的“自动包含”方式,类似于Python系统导入。
它改进了PHP的include/require系统,允许开发者节省代码,避免一系列的include/require。
librarian和Composer一样吗?
不!实际上,建议使用Composer来使用librarian。
为什么不使用Composer呢?
因为Composer是为执行PHP类的自动加载而构建的,但它没有提供在这方面(自动加载)更多的便利,对于那些需要处理大量include/require的人来说。
尽管Composer提供了files指令,但要使用它,您必须手动配置所有希望使用的文件,而且这些文件都将始终被加载。
使用librarian,您可以在代码或脚本的每个部分中仅加载将使用的文件。
要求
librarian的要求是
- PHP 7.1或更高版本
- Composer(如果需要安装和使用,请参阅“安装”部分)
安装
推荐使用Composer进行安装
composer require everton3x/librarian
在composer.json文件中添加以下配置指令
{
"autoload": {
"files": ["vendor/librarian/src/librarian.php"]
}
}
然后,使用composer update更新Composer。
完成了,现在您已经在使用的PHP文件中启用了librarian vendor/autoload.php。
使用
librarian基于两个基本概念:模块和包。
一个模块对应一个包含函数定义的PHP文件(尽管您可以在文件中放入任何内容,因为librarian通过require_once()来导入其内容)。
包表示一个存储模块文件的目录路径。您可以使用任何目录结构,但建议使用PSR-4标准,复制每个模块中使用的namespace结构。
鉴于 librarian 受到 Python 的 import 启发,它遵循相似的逻辑。
为了导入整个包,我们会这样做(当然,还有其他可能的语法)
from mypackage.subpackage import *
使用 librarian 时,我们会这样做
librarian\import()->from('mypackage.subpackage');
其中 mypackage.subpackage 代表目录结构 ./mypackage/subpackage/
要导入一些模块,我们会这样做
librarian\import('module1', 'module2')->from('mypackage.subpackage');
其中 module1 和 module2 分别对应文件 ./mypackage/subpackage/module1.php 和 ./mypackage/subpackage/module2.php。
也可以递归地查找所有模块
librarian\import()->from('mypackage.subpackage.*');
或者递归地查找所有 module1 和 module2 模块
librarian\import('module1', 'module2')->from('mypackage.subpackage.*');
许可证
librarian 在 MIT 许可证下分发
如何贡献
要为项目做出贡献,请按照以下步骤操作
- 创建一个分支;
- 为您的贡献创建一个特定的分支;
- 发送一个 pull request。
变更日志
我们使用 语义化版本控制 进行发布,如 Tom Preston-Werner 所述。
版本 0.1.0RC
这是初始版本,实现了基本功能。
在这个版本中,测试是以原始方式进行的,并且尚未在生产环境中使用,也就是说,未来可能会发生变化。
路线图
版本 0.2.0
- 包括对包的基本路径的支持。