cbednarski / pharcc
Phar 编译器库
Requires
- cbednarski/fileutils: 0.1.*
- symfony/console: 2.3.*
- symfony/finder: 2.3.*
- symfony/yaml: 2.3.*
This package is not auto-updated.
Last update: 2020-01-19 16:52:52 UTC
README
pharcc 是一个命令行工具,可以将您的 PHP 项目转换为单个可执行的 .phar
文件,便于分发。
安装
pharcc 需要 php 5.3+。您还必须在 php.ini
中设置 phar.readonly = Off
,否则将无法编译 .phar
文件。
通过 .phar
使它工作起来最简单的方法是下载一个标记的 pharcc.phar
发布版本,并将其放在您的路径上。例如
$ wget https://github.com/cbednarski/pharcc/releases/download/v0.2.3/pharcc.phar
$ chmod +x pharcc.phar
$ sudo mv pharcc.phar /usr/local/bin/pharcc
其他方法
Composer(感谢 @clue)
$ composer global require cbednarski/pharcc=dev-master
$ echo 'export PATH=$PATH:$HOME/.composer/vendor/bin' >> ~/.bash_profile
从源代码
$ git clone https://github.com/cbednarski/pharcc
$ cd pharcc
$ make install # For using
$ make install-dev # For hacking
使用方法
pharcc 是一个命令行工具,检查您的项目并生成一个 .phar
文件。在您的项目根目录下运行以下命令
$ pharcc init
$ pharcc build
您也可以将 pharcc 作为库直接调用其内部功能,但如果你这么做,我将假设您自己能阅读代码。代码很短。欢迎提出建议!
它是如何工作的
Phar 实质上是一系列 php 文件,它们被连接在一起以创建一个单一的、可执行的 php 文件,包括资产等。pharcc 从您的项目根目录读取 .pharcc.yml
文件,并结合一些假设的约定,为您构建一个可执行的 Phar。
我假设以下情况
- 您正在使用一个 PSR-0 项目结构(以下详细说明)
- 您的应用程序是一个控制台应用程序
根据我们的假设,我已经为您选择了一些合理的默认值,用于包含或排除 .phar
文件中的文件,您可以通过编辑 .pharcc.yml
文件来自定义这些值。如果您的应用程序不是控制台应用程序,您可以从配置中省略 main
。
您的项目布局
我假设您的项目布局类似于以下内容,这是 PSR-0 应用程序的常见布局
.
├── LICENSE
├── bin
│ └── pharcc
├── composer.json
├── readme.md
├── src
│ └── cbednarski
│ └── Pharcc
├── tests
│ └── cbednarski
│ └── Pharcc
└── vendor
├── autoload.php
├── cbednarski
│ └── fileutils
├── composer
│ ├── ClassLoader.php
└── symfony
├── console
├── finder
└── yaml
如果您的应用程序与此不同,pharcc 可能仍然可以工作,但您需要调整您的 .pharcc.yml
以包含或排除其他适当的文件。
版本报告
如果您的项目在 git 中,使用 semver 标签进行发布,并使用 symfony 控制台组件,pharcc 可以在命令行中报告您的应用程序版本。例如
$ pharcc --version
pharcc version 0.2.3
为了使此功能在您的应用程序中工作,您需要在 bin 文件中添加 cbednarski\Pharcc\Git::getVersion(__DIR__)
。
use cbednarski\Pharcc\Git; $application = new Symfony\Component\Console\Application('pharcc', Git::getVersion(__DIR__));
注意:当前实现非常神奇,仅当您崇拜 git、semver 和 symfony 控制台组件时才有效。
贡献
欢迎贡献!请毫不犹豫地提交错误报告、功能请求,或者告诉我如何让使用变得更简单。
- 本项目的宗旨是简单且解决创建phar文件的一般用途。它目前支持控制台应用程序,并且我愿意接受添加制作web应用程序phar功能(如phpMyAdmin的phar)、自更新命令等大型功能的pull请求。也许还有其他大型功能。请联系我。
- 如果您提交了错误报告,请包括复现步骤,或者更好的是,链接到失败的编译git哈希(确保包括您的
.pharcc.yml
文件)。 - 代码遵循PSR-2格式化规则。在PR之前,使用php-cs-fixer重新格式化您的代码。
- 使用phpunit运行单元测试并确保它们通过。
- 如果您添加了功能或修复了错误,请添加测试。