【问题标题】:distributing a php command line tool分发一个 php 命令行工具
【发布时间】:2013-02-18 10:48:27
【问题描述】:

我有一个 php 命令行工具,我想与全世界分享。嗯,其实我打算写它,它是一个将设计文档加载到couchdb的工具,但这不是重点。

无论如何,是否有打包 php 脚本以便分发以便于安装的最佳做法?我在想一些类似于旧的“./configure & make & make install”的东西,但是要为 php 脚本做什么呢?我读过关于 phar 的文章,但它似乎主要用于图书馆。那么有什么想法吗?或者其他项目如何做到这一点的例子?

【问题讨论】:

  • 我认为主要问题是您将不得不让每个人的计算机都运行 Web 服务器,和/或单独安装 PHP。
  • @EM-Creations:您不需要网络服务器来运行 PHP 脚本。
  • @Johnsyweb 我是否说过您需要运行 Web 服务器,而只有 Web 服务器才能做到?没有。
  • 结果如下:github.com/limikael/couchdesigntool 非常感谢您的反馈.. :)
  • @MikaelLindqvist 感谢您的链接!我正在学习 PHP,你的源代码上的 Phar 创建示例非常有用。

标签: php shell


【解决方案1】:

Composer 是一个很好的示例,展示了如何打包工具,既可以作为独立的源代码集,也可以作为可以运行的代码。我将它安装为 phar,现在可以在任何地方以 'composer --options args' 运行它

【讨论】:

  • 啊,是的,我刚刚多读了一些关于 composer 的文章,看起来 .phar 脚本实际上可以表现得像一个可执行命令。我在这里读到了:getcomposer.org/doc/00-intro.md,他们建议在其中执行“sudo mv composer.phar /usr/local/bin/composer”。我想这就是我所追求的。将检查详细信息...
  • PHAR 正是我一直在寻找的东西,它似乎有点不直截了当,并且没有特别详细地记录如何实际创建 PHAR 存档。至少目前...
  • 看看 Composer 的构建过程,也许还有 phpunit。 php.net/manual/en/intro.phar.php 也有各种博客文章或原始信息
  • 我终于设法创建了它...这很有帮助:stackoverflow.com/questions/6336144/…
【解决方案2】:

composer 或旧的 PEAR 仍然被广泛使用,尤其是对于 CLI 工具。要创建您自己的 PEAR 频道,SensioLabs(Symfony 的成员)的Pirum 会派上用场。

为了进一步阅读,Stuart Herbert 有一个很棒的series on component based development

【讨论】:

  • hm...我知道 PEAR 和 composer,但似乎这些工具主要用于将 dependencies 安装到项目中。我希望能够创建一些行为更像命令的东西,以便它位于 /bin 目录中,并且可以通过键入它的名称从命令行调用。
  • 如果你的组件没有依赖,composer 和 PEAR 仍然有用。尤其是 PEAR 正是您正在寻找的。 IE。通过 PEAR 安装 PHPUnit 如下:pear install pear.phpunit.de/PHPUnit
  • hm.. 但是.. 安装 PHPUnit 后,我​​有没有可以运行的命令行工具?哪一个?
  • 好吧,你得到了 PHPUnit。这是一个随时可用的命令行工具。
  • Mikaels-iMac:~ mikael$ PHPunit -bash: PHPunit: 找不到命令
【解决方案3】:

查看CLIFramework,它处理子命令、参数验证、选项值(多个、标志、可选、默认)和强大的 zsh/bash 完成生成器。

编译命令也是开箱即用的,可帮助您将控制台应用程序编译为 phar 文件以进行分发。 (phpbrew使用这种方式将应用分发到世界)

这是使用 zsh 完成生成器的截屏视频(它完成参数和选项):

还有许多流行的应用程序使用 CLIFramework 和 GetOptionKit。例如,PHPBrewLazyRecord

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多