camelot / common
适用于所有 Camelot 库的通用工具
Requires
- php: ^8.1
- ext-json: *
- camelot/thrower: ^1.0
- seld/jsonlint: ^1.4
- webmozart/assert: ^1.10
Requires (Dev)
- camelot/coding-style: ^3.0
- escapestudios/symfony2-coding-standard: ^3.12
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^9.5
- symfony/phpunit-bridge: ^6.0
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 解析为 array 或 scalar。如果发生错误,则抛出 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