gowork / values
PHP 原始类型值对象。
0.6.5
2022-10-06 20:14 UTC
Requires
- php: ^8.0
Requires (Dev)
- friends-of-phpspec/phpspec-code-coverage: ^6.0
- phpbench/phpbench: @dev
- phpspec/phpspec: ^7.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.0
- dev-master
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.1
- 0.5.0
- v0.4.1
- v0.4
- v0.3
- 0.2.x-dev
- v0.2.1
- v0.2.0
- v0.1.2
- v0.1.1
- v0.1
- dev-feataure/flip-swap
- dev-dependabot/composer/vimeo/psalm-tw-4.0or-tw-5.0
- dev-fix/closure-args
- dev-fix/iterable-removing-null
- dev-feature/8.1
- dev-feature/split-strings
- dev-feature/phpstan-1
- dev-dependabot/add-v2-config-file
- dev-feature/skip-take-and-others
- dev-fix/assoc-with
- dev-feature/github-actions
- dev-fix/notEmpty-iterable
- dev-feature/phpstan-not-empty
- dev-bronek89-patch-3
- dev-fix/unpack
- dev-feature/template
- dev-fix/iterable-memleak
- dev-bronek89-patch-2
- dev-bronek89-patch-1
This package is auto-updated.
Last update: 2024-08-30 01:11:35 UTC
README
Values 是一个库,可以将 PHP 的原始类型包装成干净、不可变且用户友好的对象。
安装
它适用于 PHP >=8.0。此库在 Composer/Packagist 上以 gowork/values
的形式提供。要安装它,请执行
composer require gowork/values ^0.6
或者手动更新您的 composer.json
,如下所示
{ (...) "require": { "gowork/values": "^0.6" } (...) }
之后运行 composer install
或 composer update
。如果您不使用 Composer,请从 GitHub 下载源代码,并按需加载。然而,强烈建议使用 Composer。
用法
目前可用的实现包括
ArrayValue
PHP 原生索引数组的对象等价物。它实现了大多数 array_*
函数作为对象方法。
示例
<?php use GW\Value\Wrap; $arrayValue = Wrap::array(['a', 'b', 'c', 'a', 'd', 'f']) ->map(function (string $value): string { return strtoupper($value) }) ->map('strtolower') ->filter(function (string $value): bool { return $value !== 'd'; }) ->sort(function (string $a, string $b): int { return $a <=> $b; }) ->shuffle() ->reverse() ->unique() ->diff(Wrap::array(['d', 'f'])) ->intersect(Wrap::array(['a', 'b', 'c'])) ->join(Wrap::array(['g', 'h', 'i'])) ->unshift('j') ->shift($j) ->push('l') ->pop($l) ->slice(0, 6) ->each(function (string $value): void { echo $value; }); $count = $arrayValue->count(); $reduced = $arrayValue->reduce( function (string $reduced, string $value): string { return $reduced . $value; }, '' ); $stringValue = $arrayValue->implode(', '); if (isset($arrayValue[0])) { $first = $arrayValue[0]; } $first = $arrayValue->first(); foreach ($arrayValue as $item) { echo $item; }
AssocValue
PHP 原生关联数组的对象等价物。它具有与 ArrayValue
相同的所有方法,只有少数细微差异和一些新增功能。
<?php use \GW\Value\Wrap; $assocValue = Wrap::assocArray(['a' => 1, 'b' => 2, 'c' => 3, 'x' => 0]) ->with('d', 4) ->without('a', 'b') ->withoutElement(0) ->merge(Wrap::assocArray(['e' => 5, 'f' => 6])); $keys = $assocValue->keys(); $withMappedKeys = $assocValue->mapKeys(function (string $key): string { return strtoupper($key); }); $aValue = $assocValue->get('a', $default = 1); $hasA = $assocValue->has('a'); $associativeArray = $assocValue->toAssocArray(); $indexedArray = $assocValue->toArray();
StringValue
PHP 原始字符串的对象等价物。它实现了大多数 str*
/mb_str*
函数作为对象方法。
<?php use GW\Value\Wrap; $stringValue = Wrap::string('just example string') ->trim() ->trimRight() ->trimLeft() ->lower() ->upper() ->lowerFirst() ->upperFirst() ->upperWords() ->padLeft(50, '-') ->padRight(100, '-') ->padBoth(200, '-') ->replace('no', 'yes') ->replacePattern('/\s/', '-') ->replacePatternCallback('/[\-]+/', function (array $match): string { return '-'; }) ->truncate(140) ->substring(0, 100) ->stripTags(); $hasExample = $stringValue->contains('example'); $firstA = $stringValue->position('a'); $lastA = $stringValue->positionLast('a'); $stringLength = $stringValue->length(); $primitiveString = $stringValue->toString(); $onlyLetters = $stringValue->isMatching('/^[a-z]+$/'); $stringsArray = $stringValue->explode(' ');
StringsArray
包装字符串数组的对象。它具有与 ArrayValue
和 StringValue
相同的所有方法。调用从 StringValue
继承的方法意味着与在 StringsArray
中包含的每个 StringValue
元素上调用此方法相同。
<?php use \GW\Value\Wrap; use \GW\Value\StringValue; $stringsArray = Wrap::stringsArray(['one', ' two ', '<b>three</b>']) // StringValue ->trim() ->stripTags() ->padLeft(16) // ArrayValue ->unique() ->each(function (StringValue $value): void { echo $value->toString(); });
IterableValue
包装可迭代的对象。
<?php use \GW\Value\Wrap; $range = function (int $start, int $end) { for ($i = $start; $i <= $end; $i++) { yield $i; } }; $stringsArray = Wrap::iterable($range(0, 10)) ->join(Wrap::iterable($range(400, 440000))) ->slice(10, 20) ->filter(function (int $value): bool { return $value % 2 === 0; }) ->map(function (int $value): int { return $value + 2; }) ->each(function (int $value): void { echo $value . "\n"; });
文档
有关完整方法参考和更多示例,请参阅 此处。
贡献
想贡献吗?太好了!提交一个问题或 Pull Request,并解释您想在 GW/Value
中看到什么。
许可
MIT 许可。请参阅此存储库主目录中的 LICENSE 文件。