reptily/array-list
Composer 安装命令:
composer require reptily/array-list
包简介
ArrayList for PHP
README 文档
README
composer require reptily/array-list
what problem does this library solve?
There are no built-in mechanisms for creating lists in the PHP language. An associative array does not guarantee that its elements are typed.
Example
function show(array $items) { foreach ($items as $item) { echo $item->id . PHP_EOL; } }
In this example, we do not guarantee that all elements will be the necessary objects, and we also do not guarantee that the array will be without attachments.
function show(ArrayList $items) { foreach ($items as $item) { echo $item->id . PHP_EOL; } }
The code did not become larger, but typification appeared. ArrayList takes care of all typing and data access issues. We can be sure that all types in the array are correct and not do unnecessary checks.
Example
More examples in the directory /example
Only integer
$list = new ArrayList(ArrayList::TYPE_INTEGER, [1, 2, 3]); // or $list = new ArrayListInteger([1, 2, 3]); foreach ($list as $item) { echo $item . PHP_EOL; }
If we need a collection of objects
class UserList extends ArrayList { public function __construct(?array $items = null) { parent::__construct(UserDTO::class, $items); } }; class UserDTO { public $id; public $name; public function __construct($id, $name) { $this->id = $id; $this->name = $name; } } $userList = new UserList(); $userList->add(new UserDTO(1, 'bob')); $userList->add(new UserDTO(2, 'job')); function echoDTOs(UserList $list): void { $list->forEach(function ($item) { echo sprintf("id:%d name:%s" . PHP_EOL, $item->id, $item->name); }); }
Use as Object
$ids = new ArrayListInteger([1, 2, 3]); $ids->add(4); function show(ArrayListInteger $ids) { $ids->forEach(function($id) { echo $id . PHP_EOL; }); } show();
Use as Array
$ids = new ArrayListInteger([1, 2, 3]); $ids[] = 4; function show(ArrayListInteger $ids) { foreach ($ids as $id) { echo $id; } } show();
Methods
add(mixed $item): void
Adds an element to the array
count(): int
Return the number of elements in the array
isEmpty(): bool
Return is empty
indexOf(mixed $element): ?int
Searches the array for a match, if there is one it will return the index, if not then return null
lastIndexOf(): ?int
Will return the last index in the array, if the array is empty will return null
clone(): self
Clones an object
toArray(): array
Converts to an associative array
get(int $index): mixed
Returns an element by its index, if there is no element, an exception will be thrown
set(int $index, mixed $item): void
Sets a value on an element by its index
exists(int $index): bool
Checks the presence of an element by its index
remove(int $index): void
Remove element by its index
clear(): void
Cleans the array
forEach(): callback(mixed $item, int $index)
Returns a callback for each element in the array
sort(string $sort = 'asc'|'desc'): void
Sorts an array
Support class
ArrayListInteger
Creates a list where the elements must all be integer
ArrayListString
Creates a list where the elements must all be string
ArrayListFloat
Creates a list where the elements must all be float
Constants
Constants by types
- TYPE_STRING
- TYPE_INTEGER
- TYPE_BOOLEAN
- TYPE_FLOAT
Constants by sort
- SORT_DESC
- SORT_ASC
reptily/array-list 适用场景与选型建议
reptily/array-list 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 14 次下载、GitHub Stars 达 1, 最近一次更新时间为 2023 年 10 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 reptily/array-list 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 reptily/array-list 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 14
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0-or-later
- 更新时间: 2023-10-25