×
¥
查看详情
🔥 会员专享 文生文 其它

PHP条件分支结构生成器

👁️ 69 次查看
📅 Dec 10, 2025
💡 核心价值: 本提示词专为PHP开发者设计,能够根据指定的变量和条件逻辑,生成结构清晰、语法规范的switch case条件分支代码。通过系统化的任务分解和约束验证,确保输出的PHP代码具备良好的可读性、可维护性和错误处理机制,适用于菜单导航、状态管理、类型判断等多种业务场景,有效提升开发效率和代码质量。

🎯 可自定义参数(4个)

变量名称
需要进行条件判断的PHP变量名称
变量类型
变量的数据类型
业务场景
代码应用的业务场景描述
条件分支
条件分支定义,格式为'值:描述',多个分支用逗号分隔

🎨 效果示例

PHP Switch Case代码

<?php
declare(strict_types=1);

/**
 * 用户角色权限判定(switch-case 实现)
 *
 * 返回统一的授权决策结果数组,包含是否允许、权限列表、HTTP状态码和消息。
 * 注意:此函数仅做授权判定与结构化输出,不直接发送头信息或中止请求,便于在上层控制器中统一处理。
 */
function authorizeByRole(string $userRole): array
{
    // 标准化角色值(去空白、统一为小写)
    $role = strtolower(trim($userRole));

    if ($role === '') {
        // 输入为空属于无效参数,向上抛出以便调用方区分输入错误与授权失败
        throw new InvalidArgumentException('User role must not be empty.');
    }

    // 决策结果基础模板(默认拒绝 + 403)
    $decision = [
        'role'        => $role,
        'allowed'     => false,
        'permissions' => [],
        'http_status' => 403,
        'message'     => 'Access denied.',
    ];

    switch ($role) {
        case 'super_admin':
            // 系统管理员:全局管理与审计权限
            $decision['allowed']     = true;
            $decision['permissions'] = [
                // 管理与运维
                'manage_all',
                'user_manage',
                'user_delete',
                'config_manage',
                // 审计
                'audit_view',
                'audit_write',
                // 内容全权
                'content_create',
                'content_update',
                'content_publish',
                'content_unpublish',
                // 只读
                'view_public',
            ];
            $decision['http_status'] = 200;
            $decision['message']     = 'Granted: super_admin.';
            break;

        case 'admin':
            // 站点管理员:管理用户与配置,但无审计权限
            $decision['allowed']     = true;
            $decision['permissions'] = [
                'user_manage',
                'config_manage',
                'content_create',
                'content_update',
                'view_public',
                // 不包含:audit_*、content_publish/unpublish、user_delete
            ];
            $decision['http_status'] = 200;
            $decision['message']     = 'Granted: admin.';
            break;

        case 'editor':
            // 内容编辑:可新建与更新内容,不可发布,不可删除用户
            $decision['allowed']     = true;
            $decision['permissions'] = [
                'content_create',
                'content_update',
                'view_public',
            ];
            $decision['http_status'] = 200;
            $decision['message']     = 'Granted: editor.';
            break;

        case 'reviewer':
            // 内容审核:审批发布与下线内容
            $decision['allowed']     = true;
            $decision['permissions'] = [
                'content_approve',
                'content_publish',
                'content_unpublish',
                'view_public',
            ];
            $decision['http_status'] = 200;
            $decision['message']     = 'Granted: reviewer.';
            break;

        case 'viewer':
            // 只读访客:仅可查看公开页面
            $decision['allowed']     = true;
            $decision['permissions'] = [
                'view_public',
            ];
            $decision['http_status'] = 200;
            $decision['message']     = 'Granted: viewer.';
            break;

        case 'banned':
            // 封禁用户:拒绝所有访问并记录告警
            $decision['allowed']     = false;
            $decision['permissions'] = [];
            $decision['http_status'] = 403;
            $decision['message']     = 'Access denied: banned user.';
            // 记录安全告警(避免记录敏感信息)
            error_log('[SECURITY] Banned role attempted access.');
            break;

        default:
            // 未知角色:拒绝访问并记录警告(仅记录经过白名单字符过滤的角色片段)
            $decision['allowed']     = false;
            $decision['permissions'] = [];
            $decision['http_status'] = 403;
            $decision['message']     = 'Access denied: unknown role.';
            error_log('[WARN] Unknown role encountered: ' . preg_replace('/[^a-z0-9_\-]/i', '', $role));
            break;
    }

    return $decision;
}

/**
 * 可选:权限检查辅助函数
 */
function hasPermission(array $decision, string $permission): bool
{
    return $decision['allowed'] === true
        && in_array($permission, $decision['permissions'], true);
}

代码说明

  • 变量用途:

    • userRole:表示当前用户的角色标识,用于进行权限判定与分支逻辑选择。
  • 分支逻辑:

    • super_admin:拥有全局管理与审计权限,允许所有与管理和内容相关的操作。
    • admin:可管理用户与站点配置,允许创建/更新内容,但无审计权限,不授予发布/下线与删除用户的权限。
    • editor:可新建与更新内容,不可发布或删除用户。
    • reviewer:可审批发布与下线内容。
    • viewer:只读访客,仅可查看公开页面。
    • banned:拒绝所有访问,返回403并记录安全告警日志。
    • default:对于未知角色拒绝访问,返回403并记录警告日志(对角色字符串进行安全过滤后再写日志)。
  • 注意事项:

    • 使用严格类型声明并对输入进行标准化(trim + strtolower),避免大小写或空白导致的错误匹配。
    • 默认拒绝策略(default分支)有助于在角色未覆盖或配置遗漏时保持安全。
    • 日志记录避免写入敏感信息,仅记录必要的安全事件。
    • 授权判定与输出、跳转等响应处理解耦:函数仅返回决策结果,上层控制器依据结果决定返回码与页面流转。
    • 权限字符串建议在项目中统一维护与约定,并在使用处通过 hasPermission 进行精确判断。

使用示例

<?php
declare(strict_types=1);

// 假设此值来自已认证用户的会话或令牌,不应直接信任前端传入
$userRole = 'Editor'; // 大小写不敏感,示例值

try {
    $decision = authorizeByRole($userRole);

    if ($decision['allowed'] !== true) {
        http_response_code($decision['http_status']);
        // 生产环境可替换为统一错误页渲染
        echo $decision['message'];
        exit;
    }

    // 示例:基于权限控制功能按钮/接口
    if (hasPermission($decision, 'user_manage')) {
        // 展示“用户管理”菜单或允许访问相关接口
    }

    if (hasPermission($decision, 'content_publish')) {
        // 允许发布/下线内容
    } else {
        // 隐藏发布按钮或禁止调用发布接口
    }

    // 调试输出(仅开发环境使用)
    // echo json_encode($decision, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

} catch (InvalidArgumentException $e) {
    http_response_code(400);
    echo 'Bad Request: ' . $e->getMessage();
    // 可按需记录日志:error_log($e->getMessage());
    exit;
}

PHP Switch Case代码

<?php
declare(strict_types=1);

/**
 * 菜单构建器:根据 showAdminMenu 标志生成导航菜单项
 *
 * 说明:
 * - 支持布尔值及常见字符串/数字形式的布尔输入(如 "true"、"false"、1、0),会做安全规范化
 * - 使用 switch case 明确区分 true/false 分支,并包含 default 兜底处理
 * - 返回的数据适合进一步渲染为 HTML,渲染时会进行必要的转义
 */

/**
 * 构建菜单项数组
 *
 * @param mixed $showAdminMenu 期望为布尔值;若为字符串/数字,会尝试转换;非法值将回退为 false
 * @return array<int, array{label:string, url:string}>
 */
function buildMenuItems($showAdminMenu): array
{
    // 1) 规范化输入:确保为布尔值;非法输入安全回退为 false,并记录日志
    if (!is_bool($showAdminMenu)) {
        $normalized = filter_var($showAdminMenu, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
        if ($normalized === null) {
            // 记录一次可审计的告警日志;生产环境建议接入统一日志系统
            error_log('[menu] showAdminMenu is not boolean, fallback to false');
            $showAdminMenu = false;
        } else {
            $showAdminMenu = $normalized;
        }
    }

    // 2) 基础公共菜单项(普通导航)
    $items = [
        ['label' => '首页',   'url' => '/'],
        ['label' => '产品',   'url' => '/products'],
        ['label' => '支持',   'url' => '/support'],
    ];

    // 3) 使用 switch 分支控制是否追加管理菜单
    switch ($showAdminMenu) {
        case true:
            // 显示管理菜单:渲染控制台与运维入口
            $items[] = ['label' => '控制台', 'url' => '/admin/console'];
            $items[] = ['label' => '运维入口', 'url' => '/admin/ops'];
            break;

        case false:
            // 隐藏管理菜单:仅保留普通导航项(无需额外处理)
            break;

        default:
            // 理论上不会触达(已做规范化),保留兜底以增强健壮性
            error_log('[menu] Unexpected value in switch(showAdminMenu), no admin items added');
            break;
    }

    return $items;
}

/**
 * 将菜单项数组安全渲染为 HTML 字符串
 *
 * @param array<int, array{label:string, url:string}> $items
 * @return string
 */
function renderMenuHtml(array $items): string
{
    $html = "<ul class=\"nav\">\n";
    foreach ($items as $item) {
        // 安全转义,防止 XSS
        $label = htmlspecialchars($item['label'], ENT_QUOTES, 'UTF-8');
        $url   = htmlspecialchars($item['url'],   ENT_QUOTES, 'UTF-8');
        $html .= "  <li class=\"nav-item\"><a class=\"nav-link\" href=\"{$url}\">{$label}</a></li>\n";
    }
    $html .= "</ul>\n";
    return $html;
}

代码说明

  • 变量用途:

    • showAdminMenu:用于控制是否显示“管理菜单”。true 时追加“控制台”“运维入口”等管理项;false 时仅显示普通导航项。
  • 分支逻辑:

    • case true:在基础菜单项后追加管理菜单项(控制台、运维入口)。
    • case false:不追加任何管理菜单项,仅保留基础菜单。
    • default:作为兜底,理论上不会触达(已在进入 switch 前将输入规范化为布尔值);若触达则记录日志并不追加管理项。
  • 注意事项:

    • 输入规范化:buildMenuItems 对非布尔输入进行了安全转换(如 "true"/"false"/1/0)。无法转换时回退为 false,并记录日志,避免异常中断。
    • 安全性:renderMenuHtml 对输出进行了 htmlspecialchars 转义,防止 XSS 风险。
    • 可维护性:将“构建数据”和“渲染输出”解耦,便于在不同呈现层(如 REST、Blade、Twig)复用。
    • 性能:switch 对布尔值分支开销极低;将公共菜单独立初始化避免重复拼装。
    • 日志:生产环境建议将 error_log 替换为统一日志方案(如 PSR-3 Logger)。

使用示例

<?php
require_once __DIR__ . '/menu.php'; // 假设以上代码保存在 menu.php

// 示例1:明确布尔值 true,显示管理菜单
$itemsWithAdmin = buildMenuItems(true);
echo renderMenuHtml($itemsWithAdmin);

// 示例2:来自请求参数(字符串),内部会自动规范化为布尔值
$userInput = $_GET['showAdminMenu'] ?? 'false'; // 例如 ?showAdminMenu=true
$itemsFromInput = buildMenuItems($userInput);
echo renderMenuHtml($itemsFromInput);

// 示例3:明确布尔值 false,仅显示普通导航
$itemsWithoutAdmin = buildMenuItems(false);
echo renderMenuHtml($itemsWithoutAdmin);

测试方法:

  • 访问页面时在 URL 中切换参数 ?showAdminMenu=true 与 ?showAdminMenu=false,观察菜单是否追加“控制台”“运维入口”。
  • 传入非法值(如 ?showAdminMenu=abc),应仅显示普通导航项,并在错误日志中看到回退提示。

示例详情

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

一键生成规范的switch case结构,结合变量与业务场景描述,秒出可直接粘贴的PHP代码。
自动补齐default分支与兜底处理,提前覆盖未知与越界状态,降低线上风险与返工成本。
智能优化分支顺序与注释说明,让同事即读即懂,后续扩展、合并与排错更顺畅。
面向权限判断、订单流转、菜单导航、支付方式等常见场景,开箱即用快速复用。
内置易错点提醒与最佳实践,避免遗漏break与不当比较,让代码更稳更可控。
支持参数化输入变量名、类型与分支清单,按需生成个性化模板与处理逻辑。
随附使用示例与测试指引,方便本地验证与联调,对接代码评审更省时省力。
统一团队风格与格式,保持高可读性与可维护性,持续提升协作效率与交付质量。

🎯 解决的问题

帮助PHP开发与管理团队在最短时间内产出可直接粘贴使用的条件分支代码模板,自动补齐默认与异常路径,统一注释与处理风格,显著减少if-else嵌套带来的维护成本。通过简单输入变量名、类型、业务场景与分支列表,即刻生成清晰、稳健、可复用的switch-case结构,覆盖菜单导航、权限控制、订单状态流转、类型判断、支付方式选择等高频场景。目标是让个人开发者更快交付、让团队评审更顺畅、让代码更易读易改,从而提升产能、降低缺陷率,最终形成可沉淀的团队标准与模板资产。

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...
📋
提示词复制
在当前页面填写参数后直接复制: