vector/core
Composer 安装命令:
composer require vector/core
包简介
A functional programming library for PHP
README 文档
README
The Elevator Pitch
Vector gives you php functional superpowers.
-
The evolution:
- Native PHP
array_sum( array_map( fn($a) => $a + 1, [1, 2, 3] ) ); // 9
- 👎 More than 1 or 2 function chains is unmaintainable
- Laravel Collections
collect([1, 2, 3]) ->map(fn($a) => $a + 1) ->sum(); // 9
- 👍 More than 1 or 2 function chains is unmaintainable
- 👎 Unfortunately you can't do this with every type in the same elegant way (only works with collections)
- Vector
vector([1, 2, 3]) ->pipe(Arrays::map(Math::add(1))) // or `fn($a) => $a + 1)` ->pipe(Math::sum())(); // [2, 3, 4]
- 👍 Works super similarly to collections, but just accepts & returns normal arrays (no ->toArray()-ing necessary)
- 👍 Works super similarly to collections for everything else too!
- 👎 Unfortunately it is an extra dependency (we don't have the native pipe operator yet https://wiki.php.net/rfc/pipe-operator-v2)
- Native PHP
-
You can add currying to any function, it isn't only limited to Vector built ins.
Module::curry('explode')(',')('a,b,c')(PHP_INT_MAX)// ['a', 'b', 'c']
PHP Version Support
- 8.0+
Install
composer require vector/core
Show Me Some More Code
More automatic currying.
$addOne = Arrays::map(Math::add(1)); $addOne([1, 2, 3]); // [2, 3, 4]
First class composition (Functional Pipelines).
$addSix = Lambda::compose(Math::add(4), Math::add(2)); // (Or ::pipe for the opposite flow direction) $addSix(4); // 10;
Pattern Matching (Maybe & Result monads included).
Pattern::match([ fn(Just $value) => fn ($unwrapped) => $unwrapped, fn(Nothing $value) => 'nothing', ])(Maybe::just('just')); // 'just'
Granular control flow (without try/catch).
$errorHandler = function (Err $err) { return Pattern::match([ function (QueryException $exception) { Log::info($exception); return response(404); }, function (DBException $exception) { Log::error($exception); return response(500); }, ]); }; return Pattern::match([ fn(Ok $value) => fn (User $user) => $user, $errorHandler ])(Result::from(fn() => User::findOrFail(1)));
Make your own modules with auto-curried methods
use Vector\Core\Curry; use Vector\Core\Module; class MyModule { use Module; #[Curry] protected static function myCurriedFunction($a, $b) { return $a + $b; } }
vector/core 适用场景与选型建议
vector/core 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 691 次下载、GitHub Stars 达 19, 最近一次更新时间为 2016 年 01 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「utility」 「functional」 「curry」 「monad」 「compose」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 vector/core 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 vector/core 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 vector/core 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Non-standard PHP library (NSPL) - functional primitives toolbox and more
Connection 'Db' codeception module to 'Yii2' module database settings
Auto-curried function library
Functional library for php with proper currying
Iteration tools for PHP
A collection of enhancements and utilities for the Silverstripe UserForms module
统计信息
- 总下载量: 691
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 19
- 点击次数: 9
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-01-18
