sminnee / pharout

此包已被 废弃 并不再维护。未建议替代包。

PHP CLI 工具的 Phar 编译器。源自 Composer 的编译脚本。

dev-master 2014-09-06 01:54 UTC

This package is auto-updated.

Last update: 2024-03-14 14:06:08 UTC


README

PharOut 是一个用于生成 PHP CLI 工具 Phar 分发的工具。它源自 Composer 源代码中的 Compiler.php 脚本,并被修改为更通用的工具。

为什么使用 PharOut?

将基于 PHP 的 CLI 工具作为 Phar 归档分发是一个很好的方式,但如果之前没有做过,创建可执行 Phar 文件的机制可能会有些神秘。我希望让开发者能够轻松地使用 symfony/console 等库来制作精炼的 CLI 工具,然后将它们分发给用户。

如何使用

PharOut 在如何创建您的项目方面并没有提供很多指导,但我的 CLI 项目结构大致如下

bin/
    mytool
src/
    MyNamespace/
        MyTool.php
vendor/
composer.json
composer.lock
LICENSE
README.md

PharOut 设计得与 Composer 非常好地配合使用,因此我建议您使用它来管理依赖项。

要设置它,首先将 composer 作为开发依赖项包含到您的项目中,并创建一个空的 "bin/compile" 文件。这将生成 Phar 的命令。

compososer require --dev sminnee/pharout
touch bin/compile
chmod +x bin/compile

使用以下代码作为创建 bin/compile 文件的起点。简而言之,您创建一个 SilverStripe\PharOut\Compiler 对象,对其进行配置,然后调用 writePhar() 生成 Phar。

#!/usr/bin/env php
<?php

$projectPath = dirname(__DIR__);
require($projectPath . '/vendor/autoload.php');

// Compiler configuration
$compiler = new SilverStripe\PharOut\Compiler();
$compiler
    ->forProjectAt($projectPath)
    ->withExecutable("bin/mytool")
    ->withSourcePath("src")
    ->withComposerPackages(array(
        "symfony/console",
    ))
    ->withInternalMessage("My Tool (c) 2014 Yours Truly")
;

$compiler->writePhar("mytool.phar");

现在,您可以从项目根目录运行 ./bin/compile,并将创建或替换 mytool.phar

包装愉快!