bypassflow/value-kit
Composer 安装命令:
composer require bypassflow/value-kit
包简介
PHP の値に対する path access と構造変換を束ねる value 基盤。
关键字:
README 文档
README
bypassflow/value-kit は、パス指定で PHP の値を読み書きし、入れ子の値構造を軽く組み替えるためのヘルパーパッケージです。利用者向けの正本は配列系データ向けの ArrayPathAccessor としつつ、native array 専用、object 専用、混在値向けの下位ヘルパー、構造変換向けの KeyFlattener、RecursiveFilter、NestedGrouper も提供します。domain model や persistence の責務は持たず、PHP の値に寄り添う小粒ヘルパーを受ける基盤として扱います。
動作要件
- PHP 8.5+
インストール
composer require bypassflow/value-kit
クイックスタート
最短では ArrayPathAccessor からパス access を呼べます。
use bypassflow\ValueKit\Access\ArrayPathAccessor; $name = ArrayPathAccessor::get( ['payload' => ['user' => ['name' => 'alice']]], ['payload', 'user', 'name'], );
構造変換から始めたい場合は KeyFlattener を使えます。
use bypassflow\ValueKit\Structure\KeyFlattener; $flat = KeyFlattener::dot([ 'payload' => ['user' => ['name' => 'alice']], ]);
公開 API
推奨系統
Access\ArrayPathAccessor- 利用者向けの正本 accessor です
arrayとArrayAccessを受けます
Access\StrictArrayPathAccessor- native
arrayのみに絞りたい場合の厳密版です
- native
Access\ObjectPathAccessor- object public property のみに絞りたい場合の特化版です
下位ヘルパー
Access\PathAccessor- mixed value 向けの下位 accessor です
arrayとArrayAccessを受けます- object public property もまたぎます
Structure 系
Structure\KeyFlattener- 入れ子の値を平坦な key/value へ変換します
- 平坦な key map と path/value の組という 2 種類の返り値を持ちます
dot()/paths()に加えてflatten()/escaped()を提供しますarray、走査可能なArrayAccess、object public property を読めます
Structure\RecursiveFilter- 入れ子の値を再帰的に絞り込みます
- 配列で返す形と、元の形を保って返す形を持ちます
keepObjectAsArray()とkeepStdClass()で返り方を分けます- 汎用 predicate、branch policy、null / 空文字 / falsey / empty 除去ヘルパーを提供します
Structure\NestedGrouper- row list を入れ子の grouped map へ変換します
- grouped list と grouped one-map の 2 種類の返り値を持ちます
groupBy()/groupOneBy()/groupLastBy()と skip / normalize / duplicate policy を提供しますarray、走査可能なArrayAccess、object row を読めます
Accessor の選び方
最初に選ぶ時は、普段使いの系統 から決めて、そこに収まらない時だけ PathAccessor を選ぶのが基本です。
推奨系統
ArrayPathAccessorarrayとArrayAccessを受ける利用者向け正本です- 途中パスは配列で生成します
StrictArrayPathAccessor- native
arrayのみに絞る厳密版です - 途中パスは配列で生成します
- native
ObjectPathAccessor- object public property のみを扱います
- magic method や private / protected property は対象外です
stdClassの途中パスは object 連鎖で生成します
下位ヘルパー
PathAccessorarray/ArrayAccess/ object public property をまたぐ mixed ヘルパーです- mixed payload を 1 本で扱いたい時だけ選びます
stdClassの途中パスは object 連鎖で生成します
Structure の選び方
形を読むのではなく作り替えたい時は、Structure 系から選びます。
KeyFlattener- 入れ子の値を一覧化したい時に選びます
- form field map や config flatten に向きます
RecursiveFilter- 入れ子の値全体から不要 leaf を落としたい時に選びます
- request payload cleanup や export 前の掃除に向きます
NestedGrouper- row list を grouped map へ組み替えたい時に選びます
- report や template 向けの row shaping に向きます
Structure の返却形
Structure 系はヘルパーごとに返す形が違います。先に返り値の形を揃えて読むと、公開面の違いが追いやすくなります。
KeyFlattener- 平坦な key map
- path/value の組
RecursiveFilter- 配列で返す形
- 同じ形で返す形
NestedGroupergrouped listgrouped one-map
Structure の policy
Structure 系では policy 名もなるべく固定しています。現時点の正本語彙は skip、normalize、keep first、keep last、throw on collision です。
注意点
ArrayAccessArrayPathAccessorが普段使いの入口ですPathAccessorもArrayAccessを扱えます- ただし判定は
offsetExists()やisset()の実装に従うため、nativearrayと完全に同じ意味にはなりません
- object access
ObjectPathAccessorは object-only の意味を固定したい時に選びますPathAccessorの object branch も public property のみを対象にします- magic method、private / protected property、reflection 的な access は行いません
- パス正規化
- パスは
int|stringまたはlist<int|string>を正本とします - パスに配列を渡した場合、非
listでもarray_values()で詰め直して処理します - 連想配列パスも受けますが、key ではなく value が要素として使われます
- パスは
主要メソッド / ヘルパー
Accessor のメソッド群
existsPath()/has()- パス自体が辿れるかを返します
- 終端値が
nullでもtrueです
issetPath()isset()相当の判定です- 終端値が
nullならfalseです
get()/set()/remove()- 任意階層の読み取り / 更新 / 削除を行います
KeyFlattener のメソッド群
dot()/flatten()/escaped()- 平坦な key map を返すメソッド群です
flatten()は separator、leaf transform、throw on collision policy を切り替えられますescaped()は reversible encoding ではなく separator escape ヘルパーです
paths()- path/value の組を返すメソッド群です
- empty array は leaf として保持します
RecursiveFilter のメソッド群
keep()/keepObjectAsArray()/keepStdClass()- 基本 keep メソッド群です
keep()は array 正本、keepObjectAsArray()は object 読み取り variant、keepStdClass()は同形返却 variant です
removeNull()/removeEmptyString()/removeNullAndEmptyString()/removeFalsy()/removeEmpty()- 固定 policy メソッド群です
- 基本 keep メソッドのよく使う固定 policy をまとめています
NestedGrouper のメソッド群
groupBy()/groupBySkippingMissing()/groupByNormalized()- grouped list 系メソッドです
skip missingとnormalize keyは grouped list 側の policy variant です
groupOneBy()/groupOneBySkippingMissing()/groupLastBy()/groupLastBySkippingMissing()- grouped one-map 系メソッドです
groupOneBy()はkeep first、groupLastBy()はkeep lastの grouped one-map です
補助文書
詳しい使い分けと利用例は USAGE.md にまとめています。
bypassflow/value-kit 适用场景与选型建议
bypassflow/value-kit 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 04 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「filter」 「object」 「accessor」 「structure」 「traversal」 「ArrayAccess」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 bypassflow/value-kit 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bypassflow/value-kit 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 bypassflow/value-kit 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A set of useful PHP classes.
Utility to handle access to a data set by using access paths. Similar to and partly compatible with xpath and json-pointer.
Runn Me! Value Objects Library
Nova searchable filter for belongsTo relationships.
A PHP helper utility class for fluent interaction and manipulation with collection data using immutable bags
Laravel SDK mapping data in object
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 26
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-08