camelot/common

适用于所有 Camelot 库的通用工具

v3.0.0 2022-01-09 09:21 UTC

This package is auto-updated.

Last update: 2024-09-09 15:08:26 UTC


README

此库提供了一些实用函数,以帮助简化繁琐的任务。

Camelot 团队认为 PHP 错误报告系统是一个错误。许多内置函数都使用了它,导致结果不一致,令人困惑。

此库对这些函数提供了一些包装。我们的代码应始终抛出异常,而不是触发错误/警告/通知(不包括弃用警告)。

目录

断言

基于 Webmozart\Assert 的额外断言

isArrayAccessible

如果 $value 不是一个数组或实现 ArrayAccess 接口的对象,则抛出 InvalidArgumentException

isArrayAccessible($value, string $message = ''): void

isInstanceOfAny

如果 $value 不是给定类/接口之一的一个实例,则抛出 InvalidArgumentException

isInstanceOfAny($value, string[] $classes, string $message = ''): void

isIterable

如果 $value 不是一个 可迭代 对象,则抛出 InvalidArgumentException。与 isTraversable() 相同,只是名字更好。

isIterable($value, string $message = ''): void

弃用

触发弃用警告的辅助方法。

warn

触发弃用警告的快捷方式。

warn(string $subject, string|float $since = null, string $suggest = ''): void

示例

// Triggers warning: "Doing foo is deprecated."
Deprecated::warn('Doing foo');

// Triggers warning: "Doing foo is deprecated since 3.3 and will be removed in 4.0."
Deprecated::warn('Doing foo', 3.3);

// Triggers warning: "Doing foo is deprecated since 3.3 and will be removed in 4.0. Do bar instead."
Deprecated::warn('Doing foo', 3.3, 'Do bar instead');

方法

触发弃用警告的快捷方式。

method(string|float $since = null, string $suggest = '', string $method = null): void

$suggest 可以是一个描述如何使用的句子。也可以是一个方法名或 class::method,它将被转换成句子。

$method 默认为调用该方法的函数/方法。

  • 如果从构造函数中调用,警告消息表明该类已弃用。
  • 如果从魔术方法中调用,警告消息表明调用的方法/属性已弃用。

示例

class Foo
{
    public function world()
    {
        // Triggers warning: "Foo::world() is deprecated since 3.3 and will be removed in 4.0. Use hello() instead."
        Deprecated::method(3.3, 'hello');
    }
}

cls

触发弃用警告的快捷方式。

cls(string $class, string|float $since = null, string $suggest = null): void

$suggest 可以是一个描述如何使用的句子。也可以是一个类名,它将被转换成句子。

示例

// Triggers warning: "Foo\Bar is deprecated."
Deprecated::cls('Foo\Bar');

// Triggers warning: "Foo\Bar is deprecated. Use Bar\Baz instead."
Deprecated::cls('Foo\Bar', null, 'Bar\Baz');

Ini

处理 PHP 配置的设置和检索。

has

检查键是否存在。

has(string $key): bool

getStr

获取字符串值。如果键不存在或值为空,则返回默认值。

getStr(string $key, string $default = null): ?string

getBool

获取布尔值。如果键不存在或值为空,则返回 False。

getBool(string $key): bool

getNumeric

获取数值。如果键不存在或值为空,则返回默认值。

getNumeric(string $key, int|float $default = null): int|float|null

getBytes

获取内存大小值,例如 memory_limit,并将其转换为整数。如果键不存在或值为空,则返回默认值。

getBytes(string $key, int $default = null): ?int

set

为给定键设置新值。如果键不存在、不可编辑或发生错误,则抛出 RuntimeException

set(string $key, ?scalar $value): void

Json

处理带有错误处理的 JSON 解析/导出。

parse

将 JSON string 解析为 arrayscalar。如果发生错误,则抛出 ParseException

parse(string $json, int $options = 0, int $depth = 512): string

我们使用 seld/jsonlint 来确定解析失败的原因,并将其包含在异常消息中。

dump

mixed 导出为 JSON string。如果发生错误,则抛出 DumpException

dump(mixed $data, int $options = JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE, int $depth = 512): string

如果输入包含无效的 UTF-8 字符,我们会在失败之前尝试为您转换这些字符。

test

返回字符串是否是有效的 JSON。

test(string $json): bool

序列化

处理带有错误处理的 PHP 序列化解析/导出。

parse

解析 PHP 序列化 string

如果找不到序列化的类或其他错误发生,则抛出 ParseException

parse(string $value, array $options = []): mixed

注意:在 PHP 5 中忽略 $options 参数。

请参阅unserialize()获取详细信息。

dump

将任何内容转换为PHP序列化字符串

如果输入不可序列化或发生其他错误,将抛出DumpException

dump(mixed $value): string

Str

常见字符串方法。

replaceFirst

在$subject上替换第一次出现的$search文本。

replaceFirst(string $subject, string $search, string $replace, bool $caseSensitive = true): string

replaceLast

在$subject上替换最后一次出现的$search文本。

replaceLast(string $subject, string $search, string $replace, bool $caseSensitive = true): string

removeFirst

从$subject中移除第一次出现的$search文本。

removeFirst(string $subject, string $search, bool $caseSensitive = true): string

removeLast

从$subject中移除最后一次出现的$search文本。

removeLast(string $subject, string $search, bool $caseSensitive = true): string

splitFirst

根据$delimiter拆分$subject并返回第一部分。

splitFirst(string $subject, string $delimiter): string

splitLast

根据$delimiter拆分$subject并返回最后一部分。

splitLast(string $subject, string $delimiter): string

endsWith

返回主题是否以搜索字符串结尾。

endsWith(string $subject, string $search, bool $caseSensitive = true): bool

className

返回不带命名空间的全局唯一标识符(FQCN)字符串或对象的类名。

className(string|object $class): string

humanize

将字符串从驼峰式和蛇形转为人类可读的字符串。

humanize(string $text): string

camelCase

将字符串从蛇形转为驼峰式。

camelCase(string $text, bool $lowercaseFirstChar = false): string

snakeCase

将字符串从驼峰式转为蛇形。

snakeCase(string $text): string