jigarius / phpake
Phpake 是为 PHP 编写的类似 make 的实用工具。
Requires
- php: >= 8.0
- phpdocumentor/reflection-docblock: ^5.2
- symfony/console: ^5.3
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.7.1
- drupal/coder: ^8.3
- ergebnis/composer-normalize: ^2.28
- phpro/grumphp: ^1.13
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-15 23:44:42 UTC
README
Phpake 是为 PHP 编写的类似 make 的实用工具。它读作 fake,因为第二个 p 和单词 elephpant 中的第二个 p 一样,是不发音的。
我发现编写 Makefile 非常具有挑战性,因为语法与 shell 语法相似,但又有所不同。当我使用 Ruby 时,我使用 rake,它很棒,因为它使用 Ruby 语法。当我使用 PHP 时,我经常怀念有一个类似的工具,它易于安装、易于使用,并允许使用完整的 PHP 语法。因此,Phpake 应运而生。
欢迎使用它,并希望您喜欢它。
~ Jigarius
安装
可以使用 composer 轻松安装 Phpake,无论是项目内部还是系统全局。
全局安装
要在您的系统上全局安装 Phpake,请使用以下命令
composer global require jigarius/phpake
现在,为了在系统上的任何位置运行 phpake,需要将 Composer 的 vendor/bin 目录包含在 PATH 变量中。
项目安装
要在特定项目中安装 Phpake,请运行以下命令
composer require jigarius/phpake
然后您应该能够使用 composer exec phpake 运行它。
使用方法
要使用 Phpake,首先创建一个 Phpakefile 来定义一些任务。每个任务都是一个简单的 PHP 函数。您可以在 Phpakefile 部分中了解更多关于创建 Phpakefile 的信息。
以下是一些常见的 Phpake 命令。您需要从包含 Phpakefile 的目录中运行它们。
phpake- 显示可用的命令列表。phpake hello-world- 运行由function hello_world()定义的命令。phpake hello-human Bunny Wabbit- 将 2 个参数传递给任务。phpake hello-group --help- 显示任务的帮助文本。
Phpakefile
一个 Phpakefile 包含了可以由 Phpake 执行的任务的定义。以下小节是关于定义此类任务的。一个 Phpake 任务定义是一个简单的 PHP 函数(一个任务回调)。以下是一些示例
简单任务
这是一个不接收输入并打印一些输出的简单任务。只需确保函数名称不与任何现有函数冲突即可。
/** * Say hello world. */ function hello_world() { echo 'Hello world' . PHP_EOL; }
然后您可以使用 phpake hello-world 执行此任务。您还可以使用 PHP 命名空间组织函数。
常规参数
如果您的任务需要从用户那里获取一些输入,只需在函数定义中引入一个或多个参数即可。
function hello_human($fname, $lname = NULL) { // Do something }
由于 $lname 有默认值,因此它被视为可选参数。
特殊参数
Phpake 是使用 Symfony Console 构建的,它提供了一些特殊参数,可以帮助您进一步丰富您的应用程序。如果您的任务具有这些特殊名称之一,它将具有特殊行为。有关这些对象的更多信息,请参阅 Symfony Console 文档。
$input
Symfony Console 输入对象。
$output
Symfony Console 输出对象,它使得生成格式化良好、色彩丰富的输出变得更容易。
function hello_joey($output) { $output->writeln('Hello <info>Joey</info>!'); }
在 <info></info> 中包含的文本将以颜色显示。
$command
正在执行的 Symfony 控制台命令的名称。它看起来像任务函数名,但有细微差别。
- 对于
function hello_world(),命令变为hello-world - 如果定义在命名空间中,它变为
namespace:hello-world。
$rest
通常存在可以接受无限数量参数的任务。这些可以使用 $rest 参数来处理。它必须定义为函数的最后一个参数。
function hello_group(string $you, string $rest) { // Do something. }
如果将 NULL 默认值分配给 $rest,则它变为可选的,否则它需要一个或多个值。
辅助函数
假设你有一个帮助其他任务但本身不是命令的函数。这样的函数也可以放在 Phpakefile 中。然而,为了让 Phpake 不将它们误认为是命令,函数名必须以下划线开头。例如,名为 _foo() 的函数不会产生名为 phpake foo 的命令,因为函数名以下划线开头。
开发
此项目使用 Docker 化的开发环境。像其他基于 docker-compose 的项目一样运行项目。
在首次开发时,
- 使用
git clone克隆仓库 - 进入克隆的仓库
- 构建 Docker 镜像:
docker compose build - 启动容器:
docker compose up -d
在初始设置之后,你可以使用以下命令
docker compose start:启动项目的容器make ssh:在项目的容器内启动 shell- 你将大部分时间都花在这里
phpake命令应该可用
docker compose stop:完成时停止项目的容器- 查看
Makefile了解更多有用的命令
链接
- Phpake 在 Packagist
- Phpake:为 PHP 构建的像 Make/Rake 的工具 —— Jigarius.com 上的文章
- Phpake 视频教程(即将推出)