首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

Laravel 的简单功能标志,以及 Laravel Toggle

发布日期 经过

Laravel 的简单功能标志,以及 Laravel 切换图像

Laravel 切换 是一个轻量级的特性标志包,专注于全局开关。Laravel 的第一方 三角旗 该软件包专为用户细分发布和 A/B 测试而设计;Laravel Toggle 则有意简化,完全跳过了用户细分,只保留了由开关控制的选项。 .env 数据库,或者两者的结合。

安装

该软件包需要 PHP 8.2+ 和 Laravel 11、12 或 13。

作曲家 要求 卸载项目/laravel-toggle
php 工匠 供应商:发布 --tag=切换配置

如果您计划使用数据库驱动程序,请发布并运行迁移:

php 工匠 供应商:发布 --tag=切换迁移
php 工匠 迁移

定义和检查切换开关

旗帜生活于 config/toggle.php 并且可以通过环境变量进行支持:

“旗帜” => [
'评论' => 环境 '切换评论' , 真的 ),
相关文章 => 环境 '切换相关文章' , 错误的 ),
],

你通过以下方式检查它们 Toggle 外观。文章控制器可以根据标志位有条件地加载关联关系,而不会污染查询:

使用 卸载项目\切换\立面\切换 ;
班级 文章控制器
{
民众 功能 展示 细绳 $slug)
{
$文章 = 文章 :: 在哪里 'slug' ,$slug)
-> 什么时候 切换 :: 积极的 '评论' ), fn ($q) => $q -> '评论.作者' ))
-> 先失败 ();
返回 看法 'articles.show' ,[
'文章' => $article,
'有关的' => 切换 :: 积极的 相关文章
相关文章 :: 为了 (文章)
: 收集 (),
]);
}
}

Toggle::inactive() 这对于保护仅在某个功能关闭时才应运行的行为非常有用,例如,当更丰富的简讯管道被禁用时,回退到普通的电子邮件摘要:

如果 切换 :: 不活跃 'newsletter-v2' )){
邮件 :: (订阅用户) -> 队列 新的 每周摘要 (文章)
}

Blade 模板拥有专用指令,因此您无需手动包装条件语句。一个典型的例子是,仅在启用评论功能时才在文章下方渲染评论线程:

@切换 '评论'
< livewire:article.comments :文章 = “$article” />
@elsetoggle
< 班级 = "text-sm text-gray-500" 此帖已关闭评论。 >
@endtoggle

如果您偏好类型安全的标识符,可以在任何接受标志名称的地方使用枚举。将标志名称集中到一个 Feature 枚举类型使其具有自动补全功能,并且在需要弃用某个枚举值时也易于通过 grep 命令查找:

枚举 特征 : 细绳
{
案件 评论 = '评论' ;
案件 相关文章 = 相关文章 ;
案件 付费墙 = “付费墙” ;
}
如果 切换 :: 积极的 特征 :: 付费墙 && $文章 -> isPremium ()){
返回 看法 'articles.paywall' , 袖珍的 '文章' ));
}

驱动程序

Laravel Toggle 自带两个存储驱动程序,可通过以下方式选择: TOGGLE_DRIVER :

切换驱动程序 = 配置 # 只读,使用 config/toggle.php 中的标志
切换驱动程序 = 数据库 # 读写,回退到配置

配置驱动程序在运行时是只读的,因为它的值来源于环境变量。数据库驱动程序会先检查数据库,如果数据库中不存在相应的记录,则回退到配置值,因此配置默认值会一直生效,直到您手动覆盖它们为止。

您也可以在同一个应用程序中混合使用这两种驱动程序,方法是分别列出数据库驱动的标志:

“旗帜” => [
'评论' => 环境 '切换评论' , 真的 ),
相关文章 => 环境 '切换相关文章' , 错误的 ),
],
'数据库标志' => [
'breaking-news-banner' ,
'newsletter-signup-modal' ,
],

旗帜 database_flags 始终使用数据库驱动程序(带配置回退),标志 flags 保持只读状态,任何未列出的标志都会回退到全局驱动程序。这使得稳定的标志能够保留在…… .env 无需部署即可更改操作标志。

运行时控制和缓存

当数据库驱动程序处于活动状态时,您可以在运行时启用或禁用标志。发布突发新闻的编辑可能无需进行任何操作即可从管理屏幕打开横幅。 .env 或发布部署:

切换 :: 使能够 'breaking-news-banner' (英文):
// 之后,当这则新闻不再是头版头条时
切换 :: 禁用 'breaking-news-banner' (英文):
// 或者完全移除覆盖并回退到默认配置。
切换 :: 删除 'breaking-news-banner' (英文):
切换 :: 全部 (); // ['breaking-news-banner' => true, 'newsletter-signup-modal' => false, ...]

查找结果会被缓存,您可以通过环境变量调整缓存存储时间和 TTL:

启用缓存 = 真的
切换缓存存储 = redis
切换缓存期限 = 3600

捆绑式 Toggle Eloquent 模型会在记录保存或删除时自动清除缓存,您也可以手动清除缓存。 Toggle::forgetCache('name') 或者 Toggle::flushCache()

对于未定义的标志,该包的行为是可配置的:返回 false , 返回 true 或者扔一个 ToggleNotFoundException 因此,在开发过程中,缺少标志会导致明显的错误。

切换默认值 = 错误的
切换默认值 = 真的
切换默认值 = 例外

惯性和工匠

如果你的前端使用 Inertia,则包含 ShareTogglesWithInertia 中间件将每个切换开关都公开为一个 flags prop。这允许你的 Vue、React 或 Svelte 组件根据条件渲染功能,而无需额外的 API 调用:

使用 卸载项目\切换\中间件\使用惯性共享切换 ;
-> withMiddleware 功能 中间件 $中间件) {
$中间件 -> 网络 附加 :[
分享切换惯性 ::班级 ,
]);
})
常量 { 旗帜 } = 使用页面 ().props
如果 (flags.breakingNewsBanner){
显示横幅 ()
}

该软件包还提供了一些用于日常工作的 Artisan 命令,包括 toggle:list 检查每个已定义的标志及其当前状态, toggle:create 搭建新旗帜的脚手架 config/toggle.php.env (可选) --active--db 旗帜),以及 toggle:cache-clear 清除所有切换缓存或单个条目。

您可以访问[此处插入链接]了解更多信息并查看源代码。 GitHub

Yannick Lyn Fatt 的照片

Laravel News 的特约撰稿人和全栈 Web 开发人员。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
Laravel 代码审查

几天内即可获得 Laravel 代码审查方面的专家指导

访问 Laravel 代码审查
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
SerpApi 标志

SerpApi

通过简单的 API 即可访问实时搜索引擎结果——告别繁琐的抓取工作!可用于人工智能应用、SEO 工具、产品研究、旅游信息等。

SerpApi
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
绝不妥协标志

绝不妥协

来自 No Compromises 播客的两位经验丰富的开发者 Joel 和 Aaron 现在可以为您的 Laravel 项目提供服务。⬧ 固定费用 9500 美元/月。⬧ 无冗长的销售流程。⬧ 无需签订合同。⬧ 100% 退款保证。

绝不妥协
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
在 PhpStorm 镜像中管理 Laravel 云部署

在 PhpStorm 中管理 Laravel 云部署

阅读文章
Piper:PHP 管道运算符的 Laravel 风格数组和字符串辅助函数(图片)

Piper:PHP 管道运算符的 Laravel 风格数组和字符串辅助函数

阅读文章
Laravel 13.10.0 中的存储缓存存储

Laravel 13.10.0 中的存储缓存存储

阅读文章
Laravel MongoDB 全文搜索教程:相关性图像的艺术

Laravel MongoDB 全文搜索教程:相关性的艺术

阅读文章
为 Laravel 图片提供可重新排序的 Eloquent 模型拖放排序功能

为 Laravel 的 Eloquent 模型添加可重排序的拖放排序功能

阅读文章
使用 Laravel 构建 AI:基于 Livewire 图像的实时流式聊天 UI

使用 Laravel 构建 AI:借助 Livewire 实现实时流式聊天 UI

阅读文章