Project Icon

type-guard

PHP类型断言与缩小的开源库

type-guard是Pinkary Project的一个开源模块,用于PHP变量类型的缩小和断言。它提供type函数进行对象类型检查,支持PHPStan和Psalm静态分析。该库包含多种类型断言方法,如asInt()和asString(),有助于增强PHP代码的类型安全性。

GitHub 工作流状态(主分支) 总下载量 最新版本 许可证


本库目前正在开发中。请勿在生产环境中使用。

类型守卫模块是Pinkary 项目的一部分,它允许你将变量的类型缩小到更具体的类型。使用 type 函数,你可以执行特定的检查来确定对象的类型,然后以 PHPStanPsalm 静态分析器认为类型安全的方式使用该对象。

以下是一个例子,我们使用 type 函数将之前类型为 mixed 的变量缩小到更具体的类型:

function config(): mixed;

// 在编译时,$apiKey 的类型是 `mixed`:
$apiKey = config('api_key');

// 我们指示静态分析器 $apiKey 是一个 `string`:
$apiKey = type($apiKey)->asString();

这是另一个例子,我们使用 type 函数将之前可能为 null 的变量类型缩小。在这个过程中,不会丢失任何类型信息:

/** @var array<int, User>|null $users */
$users = getUsers();

// 将类型缩小为 `array<int, User>`
$users = type($users)->not()->null();

再举一个例子,我们将变量的类型缩小为 Collection,而不会丢失类型信息:

/** @var Collection<int, User>|null $users */
$users = getUsers();

// 将类型缩小为 `Collection<int, User>`
$users = type($users)->as(Collection::class);

安装

需要 PHP 8.2+

你可以使用 Composer 将 Type Guard 安装到你的 PHP 项目中:

composer require pinkary-project/type-guard

使用方法

as

断言并将给定变量的类型缩小为更具体的类型。

$variable = type($variable)->as(User::class);

asInt()

断言并将给定变量的类型缩小为整数。

$variable = type($variable)->asInt();

asFloat()

断言并将给定变量的类型缩小为浮点数。

$variable = type($variable)->asFloat();

asString()

断言并将给定变量的类型缩小为字符串。

$variable = type($variable)->asString();

asBool()

断言并将给定变量的类型缩小为布尔值。

$variable = type($variable)->asBool();

asNull()

断言并将给定变量的类型缩小为 null。

$variable = type($variable)->asNull();

asCallable()

断言并将给定变量的类型缩小为可调用类型。

$variable = type($variable)->asCallable();

not()->null()

断言并将给定变量的类型缩小为非 null 值。

$variable = type($variable)->not()->null();

asArray()

断言并将给定变量的类型缩小为数组。

$variable = type($variable)->asArray();

asIterable()

断言并将给定变量的类型缩小为可迭代类型。

$variable = type($variable)->asIterable();

Type GuardPinkary 项目的一部分。它由 Nuno Maduro 创建,并在 MIT 许可证 下开源。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号