theseer / autoload
生成自动加载代码的工具和库。
1.29.1
2024-04-29 19:12 UTC
Requires
- php: >=5.3
- ext-openssl: *
- theseer/directoryscanner: ^1.3.3
- zetacomponents/console-tools: ^1.7
Requires (Dev)
- php: >=7.2
- dev-master
- 1.x-dev
- 1.29.1
- 1.29.0
- 1.28.0
- 1.27.2
- 1.27.1
- 1.27.0
- 1.26.3
- 1.26.2
- 1.26.1
- 1.26.0
- 1.25.9
- 1.25.8
- 1.25.7
- 1.25.6
- 1.25.5
- 1.25.4
- 1.25.3
- 1.25.2
- 1.25.1
- 1.25.0
- 1.24.1
- 1.24.0
- 1.23.0
- 1.22.0
- 1.21.0
- 1.20.3
- 1.20.2
- 1.20.1
- 1.20.0
- 1.19.2
- 1.19.1
- 1.19.0
- 1.18.0
- 1.17.0
- 1.16.2
- 1.16.1
- 1.16.0
- 1.15.1
- 1.15.0
- 1.14.2
- 1.14.1
- 1.14.0
- 1.13.1
- 1.13.0
- 1.12.0.x-dev
- 1.12.0
This package is auto-updated.
Last update: 2024-08-29 19:50:03 UTC
README
PHP 自动加载构建器 CLI 工具 phpab 是一个命令行应用程序,用于自动化生成自动加载要求文件的过程,同时可以选择创建静态要求列表以及 Phar 归档。
功能
- 一次性递归扫描多个目录,可选地跟踪符号链接、通配符或基于 composer.json
- 缓存扫描结果
- 基于模板的自动加载代码
- 模板的自定义变量
- 兼容 PHP 5.2 的自动加载器兼容模式
- 大小写敏感以及不敏感的类名映射
- Phar 生成,可选地压缩和 openssl 密钥签名
- 静态要求列表生成
- Opcache 缓存预热列表生成
- 生成代码的 Linting
需求
- PHP 5.3+ (运行时,开发/测试:7.2+)
- Fileinfo (ext/fileinfo)
- Tokenizer (ext/tokenizer)
- 用于 PHAR 生成支持
- ext/phar (启用写入:phar.readonly = Off)
- ext/gzip (可选)
- ext/bzip2 (可选)
- ext/openssl (可选,仅用于 Phar 签名)
安装
可执行 PHAR
安装 phpab 的推荐方法是使用 phive
phive install phpab
手动安装
如果您没有安装 phive 或想手动安装,您可以从 发行版 标签下载 PHAR 归档。
请注意:在基于 Linux/Unix 的系统上,Phar 需要标记为可执行,以便直接执行
[theseer@rikka ~]$ chmod +x phpab*.phar
其他下载
使用方法
Usage: phpab [switches] <directory1|file1|/path/to/composer.json> [...<directoryN|fileN>]
-i, --include File pattern to include (default: *.php)
-e, --exclude File pattern to exclude
--blacklist Blacklist classname or namespace (wildcards supported)
--whitelist Whitelist classname or namespace (wildcards supported)
-b, --basedir Basedir for filepaths
-t, --template Path to code template to use
-o, --output Output file for generated code (default: STDOUT)
-p, --phar Create a phar archive (requires -o )
--all Include all files in given directory when creating a phar
--alias Specify explicit internal phar alias filename (default: output filename)
--hash Force given hash algorithm (SHA-1, SHA-256 or SHA-512) (requires -p, conflicts with --key)
--bzip2 Compress phar archive using bzip2 (requires -p) (bzip2 required)
--gzip Compress phar archive using gzip (requires -p) (gzip required)
--key OpenSSL key file to use for signing phar archive (requires -p) (openssl required)
-c, --compat Generate PHP 5.2 compatible code
-s, --static Generate a static require file
-w, --warm Generate a static opcache warming file
--reset Add opcache reset call when generating opcache warming file
-1, --prepend Register as first autoloader (prepend to stack, default: append)
-d, --no-exception Do not throw exception on registration problem (default: throw exception)
-n, --nolower Do not lowercase classnames for case insensitivity
-q, --quiet Quiet mode, do not output any processing errors or information
--cache <file> Enable caching and set filename to use for cache storage
--follow Enables following symbolic links (not compatible with phar mode)
--format Dateformat string for timestamp
--linebreak Linebreak style (CR, CRLF or LF, default: LF)
--indent String used for indenting or number of spaces (default: 16 (compat 12) spaces)
--tolerant Ignore Class Redeclarations in the same file
--once Use require_once instead of require when creating a static require file
--trusting Do not check mimetype of files prior to parsing (default)
--paranoid Do check mimetype of files prior to parsing
--var name=foo Assign value 'foo' to variable 'name' to be used in (custom) templates
--lint Run lint on generated code and exit
--lint-php PHP binary to use for linting (default: /usr/bin/php or c:\php\php.exe)
-h, --help Prints this usage information
-v, --version Prints the version and exits
使用示例
[theseer@rikka ~]$ phpab -o src/autoload.php -b src composer.json
[theseer@rikka ~]$ phpab -o opcache_warming.php -w --reset src
[theseer@rikka ~]$ phpab -o src/autoload.inc.php src
[theseer@rikka ~]$ phpab -c -o src/autoload.inc.php src
[theseer@rikka ~]$ phpab -o src/core/autoload.inc.php -b src src
[theseer@rikka ~]$ phpab -p -o framework.phar -b src composer.json
[theseer@rikka ~]$ phpab -p -o framework.phar framework/src
[theseer@rikka ~]$ phpab -p -o framework.phar --bzip2 --key sign.key framework/src
[theseer@rikka ~]$ phpab -b . --tolerant -o zf1_autoload.php -e '*/Test/*' Zend
自动化
当使用 phpab 时,每次创建新类时都需要重新创建自动加载文件。这通常也发生在从仓库拉取或切换分支之后。通过在 .git/hooks/post-update
中放置 git post-checkout
钩子,这可以自动处理大多数情况。
基本示例
#!/bin/bash
phpab -c -o src/autoload.inc.php src
使用 ant build.xml
文件的示例。
#!/bin/bash if [ -f build.xml ]; then ant -p | grep phpab > /dev/null if [ $? -eq 0 ]; then ant phpab > /dev/null & fi fi
模板变量
生成的代码基于默认在 templates 子文件夹中提供的模板。模板引擎允许简单地替换基于名称的占位符。目前,只定义了一些默认变量,但 API 钩子/ CLI 参数可用于设置自定义变量。
已知变量包括
___CREATED___
设置为创建的时间戳,格式可以调整___CLASSLIST___
以生成的映射形式找到的类列表___BASEDIR___
如果设置了 Basedir,则将从文件路径中移除其值,并用 DIR 替换
仅用于 Phar 模式
___PHAR___
生成的 Phar 的文件名或当给定 --alias 时它的别名(见 src/templates/phar.php.tpl)
通过通过 CLI 传递 --var name=value 定义的自定义变量可以通过在前面和后面添加 ___ 来访问
___name___
将由 CLI 参数提供的值替换
变更日志
变更日志已移动到其自己的文档中 changelog