everton3x/librarian

此包已被弃用,不再维护。未建议替代包。

PHP库导入器,类似于Python导入系统。

dev-master 2019-03-08 19:54 UTC

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 受到 Pythonimport 启发,它遵循相似的逻辑。

为了导入整个包,我们会这样做(当然,还有其他可能的语法)

from mypackage.subpackage import *

使用 librarian 时,我们会这样做

librarian\import()->from('mypackage.subpackage');

其中 mypackage.subpackage 代表目录结构 ./mypackage/subpackage/

要导入一些模块,我们会这样做

librarian\import('module1', 'module2')->from('mypackage.subpackage');

其中 module1module2 分别对应文件 ./mypackage/subpackage/module1.php./mypackage/subpackage/module2.php

也可以递归地查找所有模块

librarian\import()->from('mypackage.subpackage.*');

或者递归地查找所有 module1module2 模块

librarian\import('module1', 'module2')->from('mypackage.subpackage.*');

许可证

librarianMIT 许可证下分发

如何贡献

要为项目做出贡献,请按照以下步骤操作

  1. 创建一个分支;
  2. 为您的贡献创建一个特定的分支;
  3. 发送一个 pull request。

变更日志

我们使用 语义化版本控制 进行发布,如 Tom Preston-Werner 所述。

版本 0.1.0RC

这是初始版本,实现了基本功能。

在这个版本中,测试是以原始方式进行的,并且尚未在生产环境中使用,也就是说,未来可能会发生变化。

路线图

版本 0.2.0

  1. 包括对包的基本路径的支持。