写 PHP 的都知道,Composer 用起来很顺手:composer require
、vendor/
、自动加载——这些操作闭着眼都能做。这么多年来,它确实是 PHP 依赖管理的标杆。但实话说,它也有不少毛病。你有没有被巨大的 vendor/
目录搞得心烦?被只能加载类的限制憋屈过?或者纳闷为什么 PHPStan 这种工具每个项目都得装一遍?
我也被这些问题折磨过。PHP 确实很灵活——做 Web、API、脚本都行——但总感觉被框住了。为什么 PHP 只能做 Web,而 Python 随便就能写出各种命令行工具?带着这些疑问,我发现了 phpkg,一个正在改变 PHP 游戏规则的新包管理器。先说结论:它不是 Composer 的山寨版——而是对 PHP 开发方式的全新思考。
举个例子:你手头有三个项目。每个都要用 PHPStan 检查代码,PHPUnit 跑测试,可能还有几个自己写的脚本。用 Composer 的话,就得搞三个 vendor/
目录,下载三遍,装三套依赖——团队每个人都这样,全世界每个项目都这样。这不光是硬盘空间的事,还有网络带宽、下载时间,全球服务器的负担也跟着增加。这不是有点过分吗?
关键是,这些东西根本不是你应用的代码——它们只是工具。PHPStan 又不会部署到生产环境,为什么每个 composer.json
都要写一遍?这就好比每个房间都放一把锤子,而不是工具箱里放一把就够了。我们习惯了这种浪费,但完全没必要。
phpkg
就是来解决这些问题的。它是个轻量级、基于 Git 的包管理器,砍掉了那些没用的东西,把主动权还给开发者。为什么大家开始关注它?看看这些特点:
Composer 的 PSR-4 自动加载确实不错——但只对类有用。想写个简单函数?只能包装成类。phpkg
不这样:它直接支持命名空间函数的自动加载。你写个 App\Utils\log($msg)
函数,不用包装成类,phpkg build
就能搞定。这才是 PHP 函数式编程该有的样子。
namespace App\Utils;
function log($msg) {
echo $msg;
}
// 不需要类——phpkg 处理它
不需要什么中央仓库,也不用 Packagist 做中介——直接用 Git URL 就行。添加包就这么简单:
phpkg add https://github.com/php-repos/test-runner.git
包会被克隆到 Packages/
目录,版本信息记录在 phpkg.config.json
里,马上就能用。速度快,很灵活,私有仓库或者最新分支都没问题。
这里就厉害了。phpkg run
和 phpkg serve
可以让你不用建项目就直接运行包。想在命令行看天气?
phpkg run https://github.com/php-repos/weather.git
想要个日常看板在浏览器里显示——不用搭服务器?
phpkg serve https://github.com/php-repos/daily-routine.git
这些命令会自动下载、构建,然后在临时环境里运行包。不用 vendor/
目录,不用 Web 服务器——就是 PHP 在干活。这下 PHP 终于像 Python 了:可以写工具、写小程序、写一次性脚本。
phpkg
不搞 vendor/
那套乱七八糟的东西。它的构建命令会解析命名空间——函数、类、常量——只加载需要的部分。移动了文件?没关系——phpkg watch
会实时重新构建。这才是不浪费时间的工作方式。
PHP 被当成 Web 专用语言太久了。有了 phpkg,终于能突破这个限制。比如:
PHPStan 装一次,所有项目都能用:
phpkg run https://github.com/phpstan/phpstan.git phpstan analyze ./my-app
给团队写个小工具,发个 Git 链接就行——不用搭环境。
想要个个人看板(币价、新闻、待办)?一行命令搞定。
这不光是图方便——是真的提高效率。下载少了,重复少了,复杂度也降了。
之前做 daily-routine 这个项目时感受很深。想做个个人看板——天气、币价、新闻——每天看一眼。用 Composer 的话,得搭个 Web 项目,还要配置服务器。用 phpkg serve
就简单了:
phpkg serve https://github.com/php-repos/daily-routine.git
打开 localhost:8000 就能用。不用域名,不用 Nginx——就是 PHP 在干活。那时候才明白:phpkg 不是要替换 Composer,而是让 PHP 能做更多事。
先装 phpkg:
bash -c "$(curl -fsSL https://raw.github.com/php-repos/phpkg-installation/master/install.sh)"
跑个 Chuck Norris 笑话生成器:
phpkg run https://github.com/php-repos/chuck-norris.git
或者跑个日常看板:
phpkg serve https://github.com/php-repos/daily-routine.git
不用建项目,不用写 composer.json——直接出结果。
详细文档在 phpkg.com,可以去看看。
phpkg 不是要替换 Composer,而是给 PHP 更多可能性。让 PHP 更简洁,更灵活,更好用。虽然还在早期阶段(Windows 的 serve 功能还在开发),但方向很明确:让 PHP 成为工具开发者的好伙伴。
PHP 开发者们,现在可以试试用 PHP 做更多事了。CLI 工具?本地应用?小脚本?都可以试试。