phpkg 让 PHP 摆脱 Composer 依赖地狱
phpkg 让 PHP 摆脱 Composer 依赖地狱
Composer 挺好,但 PHP 还能更强
写 PHP 的都知道,Composer 用起来很顺手:composer require、vendor/、自动加载——这些操作闭着眼都能做。这么多年来,它确实是 PHP 依赖管理的标杆。但实话说,它也有不少毛病。你有没有被巨大的 vendor/ 目录搞得心烦?被只能加载类的限制憋屈过?或者纳闷为什么 PHPStan 这种工具每个项目都得装一遍?
我也被这些问题折磨过。PHP 确实很灵活——做 Web、API、脚本都行——但总感觉被框住了。为什么 PHP 只能做 Web,而 Python 随便就能写出各种命令行工具?带着这些疑问,我发现了 phpkg,一个正在改变 PHP 游戏规则的新包管理器。先说结论:它不是 Composer 的山寨版——而是对 PHP 开发方式的全新思考。
原文链接 phpkg 让 PHP 摆脱 Composer 依赖地狱
核心问题:工具不该当依赖
举个例子:你手头有三个项目。每个都要用 PHPStan 检查代码,PHPUnit 跑测试,可能还有几个自己写的脚本。用 Composer 的话,就得搞三个 vendor/ 目录,下载三遍,装三套依赖——团队每个人都这样,全世界每个项目都这样。这不光是硬盘空间的事,还有网络带宽、下载时间,全球服务器的负担也跟着增加。这不是有点过分吗?
关键是,这些东西根本不是你应用的代码——它们只是工具。PHPStan 又不会部署到生产环境,为什么每个 composer.json 都要写一遍?这就好比每个房间都放一把锤子,而不是工具箱里放一把就够了。我们习惯了这种浪费,但完全没必要。
phpkg 登场
phpkg 就是来解决这些问题的。它是个轻量级、基于 Git 的包管理器,砍掉了那些没用的东西,把主动权还给开发者。为什么大家开始关注它?看看这些特点:
支持函数,不只是类
Composer 的 PSR-4 自动加载确实不错——但只对类有用。想写个简单函数?只能包装成类。phpkg 不这样:它直接支持命名空间函数的自动加载。你写个 App\Utils\log($msg) 函数,不用包装成类,phpkg build 就能搞定。这才是 PHP 函数式编程该有的样子。
namespace App\Utils;
function log($msg) {
echo $msg;
}
// 不需要类——phpkg 处理它
只要 Git 就够了
不需要什么中央仓库,也不用 Packagist 做中介——直接用 Git URL 就行。添加包就这么简单:
phpkg add https://github.com/php-repos/test-runner.git
包会被克隆到 Packages/ 目录,版本信息记录在 phpkg.config.json 里,马上就能用。速度快,很灵活,私有仓库或者最新分支都没问题。
独立运行 PHP 程序
这里就厉害了。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 工具?本地应用?小脚本?都可以试试。
phpkg 让 PHP 摆脱 Composer 依赖地狱的更多相关文章
- 对以内部 git 仓库为 composer 依赖的 package,加上版本号
现实问题 之前同事做了一个 composer package,做为公司大量 laravel 项目的通用模块. 但是,在实际使用中,每个项目对改 package 的依赖版本是有所不同的.否则 compo ...
- 更新Composer依赖报错处理Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe
更新Composer依赖报错处理 Fatal error: Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRe po ...
- composer依赖管理与laravel框架安装
步骤有点多,生怕哪一天忘记,记录下来会好点 laravel安装有两种途径:1.直接在一些国内第三方网站,如:https://www.golaravel.com/download/ 下载压缩包来解压即可 ...
- Composer依赖管理 – PHP的利器
别再到处搜PHP类扩展包了,对于现代语言而言,包管理器基本上是标配.Java 有 Maven,Python 有 pip,Ruby 有 gem,Nodejs 有 npm.PHP 的则是 PEAR,不过 ...
- PHP Composer 依赖管理的用法
1:下载 1.1:方法一: 通过PHP来安装 cd G:\web\es6 curl -sS https://getcomposer.org/installer | php #这个命令会下载compos ...
- composer 依赖的require安装与remove删除命令
安装:require composer require phpmailer/phpmailer 删除:remove composer remove phpmailer/phpmailer
- composer php依赖管理工具
#composer是什么 Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们. composer出现之前我们php项目依赖管理大部分都是手动 ...
- composer 安装依赖缓慢,查看 composer 的详细执行日志
在 windows WSL 上安装 composer 依赖 composer install 发现执行异常缓慢,怀疑没有走国内的镜像,而是直接访问的 github. 需要能看到 composer 的执 ...
- 如何避免 async/await 地狱
简评:async/await 写着很爽,不过要注意这些问题. async/await 让我们摆脱了回调地狱,但是这又引入了 async/await 地狱的问题. 什么是 async/await 地狱 ...
- 修改 Mac 默认 PHP 运行环境,给 MAMP 配置全局 Composer
在没有配置全局性的 Composer 的时候,如果你在没有安装 Composer 的目录下运行 Composer 命令,比如:create-project 系统会返回: Could not open ...
随机推荐
- jq回调函数、jq一个函数执行完毕后再执行另一个函数
jq回调函数.jq一个函数执行完毕后再执行另一个函数 - small-match - 博客园 (cnblogs.com) jq回调函数第一版 复制代码 <!DOCTYPE html> &l ...
- Oracle数据一致性与事务管理
数据一致性和事务 Oracle中的数据一致性 当从A表取一条数据添加到B表时,需先删除A表数据,再新增B表数据, 如果第二条操作出异常时,就造成了数据不一致. Oracle中的事务 事务是保证数据一致 ...
- Luogu P11160 【MX-X6-T6】機械生命体 题解
P11160 [MX-X6-T6]機械生命体 注意到 \(\text{lowbit}\) 是从最低位开始的,所以我们把数字按照二进制位从低位往高位插进字典树. 插入和删除操作是平凡的.查最大 \(\t ...
- Python列表字典高频用法大全|新手必看避坑指南
摘要:详解Python列表与字典的10个高频使用场景,包括列表切片/推导式.字典安全访问/批量操作.混合数据结构处理技巧,提供可直接套用的商品管理系统代码模板,助你高效处理数据. 有没有在数据处理时被 ...
- POLIR-Laws-民法典: 第 2-4 章 自然人{民事能力:权利&行为/监护/宣告失踪死亡/个体工商户和农村承包经营户} + 法人{营利法人/非营利法人/特别法人} + 非法人组织 + 第五章: 民事权利
POLIR-Laws-民法典: 第一章 基本规定: 人/组织: 自然人: 能力: 民事权利能力 和 民事行为能力 年龄 法人 营利法人 非营利法人 特别法人 非法人组织 物: 115..第一百一十五 ...
- POLIR-Laws-Business Insurance: 保险合同欺诈: 拼多多平台 与 中国人寿财险 的 "正品险"(套路)。
本人 已经电话联系过"ACA/北美电器"官方客服0756-3390136与4007006698, 得到明确的"官方鉴定标准"之一: "没有镭射防伪贴的 ...
- SciTech-Chemistry(化学)-电解: 电化学之"Electroplating(电镀)"工艺及应用 + Switching Power(开关电源 可软件控制波形)
Electroplating(电镀): Electroplating(电镀)是 "镀液的金属离子" 在外电场作用, 经 "电极反应" 还原成"金属原子 ...
- The Epsilon-Delta Definition of a Limit
limit极限理论: 建立在 R完备性公理化的实数集: Set theory集合论之上的 即: limit 极限 是 x, y 的 Macro/Micro.动态变化/静态关系.无限/有限.量变/质变. ...
- SciTech-Search-Bing.com 搜索API:{Web/ Custom / News / Autosuggest / Cognitive / Entity+Visual+Video+LocalBusiness / SpellCheck }: https://www.microsoft.com/en-us/bing/apis/bing-web-search-api
Azure: https://docs.microsoft.com/python/api/overview/azure/cognitive-services https://github.com/Az ...
- win11系统把扫描仪快捷方式到桌面的问题
说到扫描仪已经成为了很多雨林木风官网用户在日常工作生活中不可或缺的一个工具.扫描仪都能帮助我们快速.高效地将纸质文档转化为数字格式.然而,有一位Windows 11系统用户,却发现在桌面上没有扫描仪的 ...