infinityloop-dev / utils
infinityloop 包的常用工具类。
v2.3.1
2024-03-16 14:35 UTC
Requires
- php: >=8.1
- ext-json: *
Requires (Dev)
- infection/infection: ^0.27
- infinityloop-dev/coding-standard: ^0.2
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.4
README
🔨 infinityloop 包的常用工具类。
介绍
此组件提供了一些工具类,这些类在组织包之间使用。
安装
使用 Composer 安装包
composer require infinityloop-dev/utils
依赖
- PHP >= 8.1
类
Json
Json 包装器,允许您像处理数组一样处理 Json。解码和编码是完全延迟的。
$json = Json::fromString($jsonString); // (no decoding is done at this step) $json['foo'] = 'bar'; // adding/updating values (decoding is done on this step) unset($json['foo2']); // removing value $json->foo3 = 'bar3; // oop interface is also available $jsonString = $json->toString(); // (encoding of updated array into string again) $jsonString = $json->toString(); // (no encoding is done, because previously encoded string is up to date)
CaseConverter
简单的类,用于转换字符串的大小写。
$string = 'foo-bar_bazFoo123baz'; CaseConverter::toCamelCase($string); // fooBarBazFoo123Baz CaseConverter::toPascalCase($string); // FooBarBazFoo123Baz CaseConverter::toSnakeCase($string); // foo_bar_baz_foo_123_baz CaseConverter::toKebabCase($string); // foo-bar-baz-foo-123-baz CaseConverter::splitWords($string); // [ foo, bar, baz, foo, 123, baz ]
ClassSet
相同类型的对象的类型安全数组。
class Foo { public string $name; public function __construct(string $name) { $this->name = $name; } } class FooSet extends ObjectSet { protected const INNER_CLASS = Foo::class; } $set = new FooSet([new Foo(), new Bar(), new Baz()]); // error // automaticaly generated index keys $set = new FooSet([new Foo('foo1'), new Foo('foo2'), new Foo('foo3')]); echo $set[0]->name; // foo1 echo $set[1]->name; // foo2 echo $set[2]->name; // foo3 class NamedFooSet extends ObjectSet { protected const INNER_CLASS = Foo::class; protected function getKey($fooObject) { return $fooObject->name; } } // named keys $set = new NamedFooSet([new Foo('foo1'), new Foo('foo2'), new Foo('foo3')]); echo $set['foo1']->name; // foo1 echo $set['foo2']->name; // foo2 echo $set['foo3']->name; // foo3