nickolasburr / ezimports
此包已 废弃 且不再维护。未建议替代包。
在运行时注册PHP导入。
dev-master
2020-02-27 21:17 UTC
Requires
- php: >=7.1
This package is auto-updated.
Last update: 2022-05-28 02:12:28 UTC
README
通过JSON注册PHP导入。
目录
安装
composer require nickolasburr/ezimports
配置
导入JSON文件应包含一个对象数组,每个对象表示一个实体及其后续导入。对于每个实体对象,应指定以下属性
class
:类、接口或特质的全限定类名。imports
:导入对象数组。use
:要导入的类、接口或特质的全限定类名。as
:[可选] 替代短名称的别名。默认为短名称。
常量
在搜索之前,ezimports会查找以下常量
EZIMPORTS_MODULE_PATH
:ezimports模块目录的路径。默认为vendor/nickolasburr/ezimports
。<VENDOR>_<MODULE>_IMPORTS_FILE_NAME
:导入文件的基本名称。默认为imports.json
。<VENDOR>_<MODULE>_IMPORTS_FILE_PATH
:导入文件路径。默认为vendor/<VENDOR>/<MODULE>/imports.json
。
使用
而不是静态包含导入
<?php namespace Example; use Dictionary\WordInterface; use External\Entity; use Somewhere\Outside\ThisNamespace as Outsider; class Name implements WordInterface { }
使用FQCN和模块名称调用include_imports
<?php declare(strict_types=1); namespace Example; \include_imports(Name::class, '<VENDOR>/<MODULE>'); class Name implements WordInterface { }
接下来,将导入添加到模块根目录中的imports.json
[ { "class": "Example\\Name", "imports": [ { "use": "Dictionary\\WordInterface" }, { "use": "External\\Entity" }, { "use": "Somewhere\\Outside\\ThisNamespace", "as": "Outsider" } ] } ]
或者,通过<VENDOR>_<MODULE>_IMPORTS_FILE_PATH
指定路径。最简单的方法是为模块添加一个引导文件,它可以在加载时首先被加载。
<?php /** * bootstrap.php * * As an example, assume the module is * named 'nickolasburr/testmodule'. */ if (!defined('NICKOLASBURR_TESTMODULE_IMPORTS_FILE_PATH')) { define('NICKOLASBURR_TESTMODULE_IMPORTS_FILE_PATH', '/path/to/module/imports.json'); }
优点
- 减少PHP源文件的SLOC(源代码行数)
- 通过JSON映射依赖关系,而不是解析PHP文件
注意事项
就像其他任何东西一样,它有其权衡之处,例如
- 性能较差(目前没有正式的基准测试)
- 安全性较差(但如果没有管理好,则不是不安全的)
实际上,可能最好是坚持使用静态导入。