snicco / str-arr
Laravel的Str和Arr类的独立实现。
v2.0.0-beta.9
2024-09-07 14:27 UTC
Requires
- php: ^7.4|^8.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^9.5.13
Conflicts
- snicco/better-wp-api: <2.0.0-beta.9
- snicco/better-wp-cache: <2.0.0-beta.9
- snicco/better-wp-cache-bundle: <2.0.0-beta.9
- snicco/better-wp-cli: <2.0.0-beta.9
- snicco/better-wp-cli-testing: <2.0.0-beta.9
- snicco/better-wp-hooks: <2.0.0-beta.9
- snicco/better-wp-hooks-bundle: <2.0.0-beta.9
- snicco/better-wp-mail: <2.0.0-beta.9
- snicco/better-wp-mail-bundle: <2.0.0-beta.9
- snicco/better-wp-mail-testing: <2.0.0-beta.9
- snicco/better-wpdb: <2.0.0-beta.9
- snicco/better-wpdb-bundle: <2.0.0-beta.9
- snicco/blade-bridge: <2.0.0-beta.9
- snicco/blade-bundle: <2.0.0-beta.9
- snicco/content-negotiation-middleware: <2.0.0-beta.9
- snicco/debug-bundle: <2.0.0-beta.9
- snicco/default-headers-middleware: <2.0.0-beta.9
- snicco/eloquent: <2.0.0-beta.9
- snicco/encryption-bundle: <2.0.0-beta.9
- snicco/event-dispatcher: <2.0.0-beta.9
- snicco/event-dispatcher-testing: <2.0.0-beta.9
- snicco/guests-only-middleware: <1.0.0
- snicco/http-routing: <2.0.0-beta.9
- snicco/http-routing-bundle: <2.0.0-beta.9
- snicco/http-routing-testing: <2.0.0-beta.9
- snicco/https-only-middleware: <2.0.0-beta.9
- snicco/illuminate-container-bridge: <2.0.0-beta.9
- snicco/kernel: <2.0.0-beta.9
- snicco/kernel-testing: <2.0.0-beta.9
- snicco/method-override-middleware: <2.0.0-beta.9
- snicco/minimal-logger: <2.0.0-beta.9
- snicco/must-match-route-middleware: <2.0.0-beta.9
- snicco/no-robots-middleware: <2.0.0-beta.9
- snicco/open-redirect-protection-middleware: <2.0.0-beta.9
- snicco/payload-middleware: <2.0.0-beta.9
- snicco/pimple-bridge: <2.0.0-beta.9
- snicco/psr7-error-handler: <2.0.0-beta.9
- snicco/redirect-middleware: <2.0.0-beta.9
- snicco/session: <2.0.0-beta.9
- snicco/session-bundle: <2.0.0-beta.9
- snicco/session-psr16-bridge: <2.0.0-beta.9
- snicco/session-testing: <2.0.0-beta.9
- snicco/session-wp-bridge: <2.0.0-beta.9
- snicco/share-cookies-middleware: <2.0.0-beta.9
- snicco/signed-url: <2.0.0-beta.9
- snicco/signed-url-psr15-bridge: <2.0.0-beta.9
- snicco/signed-url-psr16-bridge: <2.0.0-beta.9
- snicco/signed-url-testing: <2.0.0-beta.9
- snicco/signed-url-wp-bridge: <2.0.0-beta.9
- snicco/templating: <2.0.0-beta.9
- snicco/templating-bundle: <2.0.0-beta.9
- snicco/testable-clock: <2.0.0-beta.9
- snicco/testing-bundle: <2.0.0-beta.9
- snicco/trailing-slash-middleware: <2.0.0-beta.9
- snicco/wp-auth-only-middleware: <2.0.0-beta.9
- snicco/wp-capability-middleware: <2.0.0-beta.9
- snicco/wp-capapility-middleware: <1.0.0
- snicco/wp-guests-only-middleware: <2.0.0-beta.9
- snicco/wp-nonce-middleware: <2.0.0-beta.9
- dev-master
- v2.0.0-beta.9
- v2.0.0-beta.8
- v2.0.0-beta.7
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- v1.10.1
- v1.10.0
- v1.9.1
- v1.9.0
- v1.8.1
- v1.8.0
- v1.7.0
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.0
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
- dev-beta
This package is auto-updated.
Last update: 2024-09-07 14:27:58 UTC
README
此包包含illuminate/support
的Str
和Arr
类的一个子集。
Laravel的字符串和数组辅助函数是非常实用的工具类,但在编写框架无关的包时,不能选择引入整个illuminate/support
。
以下是对其进行的修改:
Str
:
- 所有方法均支持完整的多字节支持
- 严格类型提示
Str
是一个最终类- 删除了所有隐藏的
illuminate/*
依赖 - 完全支持
@psalm
。
Arr
:
- 严格类型提示
Arr
是一个最终类- 删除了所有隐藏的
illuminate/*
依赖 - 在适用的情况下,将
Collection
引用替换为ArrayAccess
或ArrayObject
- 完全支持
@psalm
和@template
注解。
安装
composer require snicco/str-arr
使用
此包几乎完全自文档化。
Str
的公共API
use Snicco\Component\StrArr\Str; $subject = 'snicco.io'; Str::contains($subject, '.io') // true Str::containsAll($subject, ['.io', '.com']) // false Str::containsAny($subject, ['.io', '.com']) // true Str::studly('snicco str-arr'); // Snicco StrArr Str::ucfirst($subject); // Snicco.io Str::startsWith($subject, 'snicco') // true Str::endsWith($subject, '.io') // true Str::doesNotEndWith($subject, '.io') // false Str::afterFirst($subject, 'c') // co.io Str::afterLast($subject, 'c') // o.io Str::betweenFirst($subject, 'c', 'o') // o Str::betweenLast($subject, 'c', 'o') // co.io Str::beforeFirst($subject, 'o') // snicc Str::beforeLast($subject, 'o') // snicco.i Str::substr($subject, -3) // .io // This accepts any regex pattern. * will be replaced with ".*" Str::is($subject, 'snicco.*') // true Str::replaceFirst($subject, 'c', 'k') // snikco.io Str::replaceAll($subject, 'c', 'k') // snikko.io Str::pregReplace($subject, 'c', '/\.\w{2}/', '.de') // snicco.de
Arr
的公共API
use Snicco\Component\StrArr\Arr;use Snicco\Component\StrArr\Str; $array = [ 'foo' => 'bar' 'baz' => 'biz' 'boom' => [ 'bang' => 'pow' ] ] Arr::only($array, ['foo']) // ['foo'=>'bar'] // Returns the first array element Arr::first($array) // bar // Returns the first element matching the condition Arr::first( $array, fn(string $value, string $key) => Str::startsWith($key, 'f') ); // bar // With a default value Arr::first($array, fn($value) => is_int($value), 'default') // default Arr::random($array, 1) // returns one random value. Arr::toArray('foo') // ['foo'] Arr::toArray([]) // [] Arr::toArray(['foo']) // ['foo'] // Checks if all keys are strings Arr::isAssoc($array) // true Arr::isList($array) // false Arr::isList(['foo', 'bar']) // true Arr::get($array, 'foo') // bar Arr::get($array, 'bogus') // null Arr::get($array, 'bogus', 'default') // default Arr::get($array, 'boom.bang') // pow // passed by reference here Arr::set($array, 'boom.bang', 'POW'); Arr::has($array, 'foo') // true Arr::has($array, 'bogus') // false Arr::has($array, 'boom.bang') // true Arr::hasAll(['foo', 'bogus']) // false Arr::hasAny(['foo', 'bogus']) // true // Checks if the passed value is either array or ArrayAccess Arr::accessible($array) // true Arr::mergeRecursive($array, ['boom' => ['bang' => 'POW', 'new' => 'NEW']]) // [ 'foo' => 'bar' // 'baz' => 'biz' // 'boom' => [ // 'bang' => 'POW', // 'new => 'NEW' // ] // ] Arr::keyExists($array, 'foo') // true Arr::flatten($array) // ['bar', 'biz', 'pow'] Arr::except($array, ['foo', 'baz']) // [ // 'boom' => [ // 'bang' => 'POW', // 'new => 'NEW' // ] // ] // Passed by reference here Arr::remove($array, 'boom.bang'); // [ 'foo' => 'bar' // 'baz' => 'biz' // 'boom' => [] // ]
贡献
此存储库是Snicco项目开发仓库的只读分支。
报告问题和发送拉取请求
请在Snicco monorepo中报告问题。
安全性
如果您发现了一个安全漏洞,请遵循我们的披露程序。