wtframework / types
什么是框架?!types
v0.4.1
2024-09-24 19:49 UTC
Requires
- php: ^8.2
Requires (Dev)
- pestphp/pest: ^3.2.0
README
此库提供了一种流畅的接口来操作字符串、数组和数字。
安装
composer require wtframework/types
文档
此库中提供的每个类都是相关原生函数的包装器。方法名称主要使用原生函数名称,但去除了下划线和某些前缀,如 str*
和 array*
。大多数方法都是可链式的,即使从字符串切换到数组或反之亦然。
use function WTFramework\Types\arr; use function WTFramework\Types\num; use function WTFramework\Types\str; str('reverse me') ->explode(' ') // returns arr(['reverse', 'me']) ->reverse() ->implode(' '); // returns str('me reverse')
某些方法在适当的情况下默认不可链式。
str('example') ->len(); // returns 7
在这种情况下,可以通过引用传递一个最终的 $return
参数。默认返回值将被分配给此变量,并且方法将返回当前对象。
str('example') ->len(return: $length); // returns $this // $length = 7
每个类都提供了一个 extract
方法来提取当前对象的克隆。
str('eXaMpLe') ->toupper() ->extract($uppercase) ->tolower() ->extract($lowercase); // $uppercase = str('EXAMPLE'); // $lowercase = str('example');
Str
和 Num
类提供了一个 echo
方法来输出当前值。此方法有可选的 $prefix
和 $suffix
参数。
str('example') ->echo( prefix: 'this is an ', suffix: '.' ); // this is an example.
虽然大多数方法名称基于原生函数名称,但在 Arr
类中有两个显著的例外:使用 advance
调用 next
,使用 contains
调用 in_array
。
arr([1, 2, 3])->contains(1); // returns true arr([1, 2, 3])->advance(); // advances the internal pointer
在适当的情况下,使用静态方法调用函数。这些是
use WTFramework\Types\Arr; use WTFramework\Types\Num; use WTFramework\Types\Str; Str::httpbuildquery($data); Str::unserialize($data); Arr::fill($start_index, $count, $value); Arr::range($start, $end); Num::max(...$values); Num::min(...$values); Num::pi();
要返回当前值,可以调用 return
方法或作为函数调用对象。
str('example')->return(); // returns 'example' arr([1, 2, 3])(); // returns [1, 2, 3]
Str
和 Num
类实现了 Stringable
,而 Arr
类实现了 ArrayAccess
、Countable
、Iterator
和 Serializable
。
扩展库
要扩展库,可以使用静态 macro
方法,传入新方法名称和要调用的闭包。这对静态和非静态方法都适用。
use WTFramework\Types\Str; Str::macro('camelCase', function () { return $this->ucwords() ->replace(' ', '') ->lcfirst(); });
// Returns 'camelCase' str('camel case')->camelCase()();