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()();