dsheiko/extras
最新稳定版本:v1.0.3
Composer 安装命令:
composer require dsheiko/extras
包简介
Collection of chainable high-order functions to abstract and manipulate PHP types
README 文档
README
The extras repository is a collection of chainable, high-order utility functions designed to extend PHP's type manipulation capabilities, offering a JavaScript-style development experience. It introduces methods inspired by JavaScript's array manipulation functions, such as map, filter, and reduce, while improving PHP's method naming conventions and consistency. This package supports diverse PHP types, including arrays, objects, and functions, while providing a fluent, chainable interface to work with data structures efficiently. It helps developers apply JavaScript-like syntax and methods to PHP with performance optimizations.
The packages takes its name from
Array Extrasreferring to the array methods added in ES5 (JavaScript) to abstract generic array manipulation logic
Installation
Require as a composer dependency:
composer require "dsheiko/extras"
Highlights
- Fixing PHP:
- Naming convention: all methods are
camelCasestyles vs PHP built-in functions inlower_case - Consistent parameter order (
Chain::chain($target)->method(...$options)or<Type>::method($target, ...$options)) - Methods are chainable
- Data structure
PlainObjectsimilar to JavaScript plain object - Manipulation target (value) can always be as reference as well as type literal
- Naming convention: all methods are
- Familiar syntax: JavaScript methods, in addition methods of Underscore.js/Lodash
- Performance: package relies on PHP native methods; no
foreachwhere a built-in specific function can be used
Sets
Download
Overview
Examples
None-reference target
<?php use \Dsheiko\Extras\Arrays; function numToArray(int $num): array { return [$num]; } $res = Arrays::map(range(1,3), "numToArray"); // [[1],[2],[3]]
Chaining methods
<?php use \Dsheiko\Extras\Any; $res = Any::chain(new \ArrayObject([1,2,3])) ->toArray() // value is [1,2,3] ->map(function($num){ return [ "num" => $num ]; }) // value is [[ "num" => 1, ..]] ->reduce(function($carry, $arr){ $carry .= $arr["num"]; return $carry; }, "") // value is "123" ->replace("/2/", "") // value is "13" ->then(function($value){ if (empty($value)) { throw new \Exception("Empty value"); } return $value; }) ->value(); echo $res; // "13"
Accessing methods directly
<?php use \Dsheiko\Extras\Arrays; class Foo { public $bar = "BAR"; } $arr = Arrays::from(new Foo); // ["bar" => "BAR"]
Plain object
<?php use \Dsheiko\Extras\Arrays; $po = Arrays::object(["foo" => "FOO", "bar" => ["baz" => "BAZ"]]); echo $po->foo; // FOO echo $po->bar->baz; // BAZ var_dump($po->bar->entries()); // [["baz", "BAZ"]]
统计信息
- 总下载量: 3.98k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 8
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-12
