infinityloop 包的常用工具类。

v2.3.1 2024-03-16 14:35 UTC

This package is auto-updated.

Last update: 2024-09-16 15:36:28 UTC


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