<?php

use App\Base\Base;
use App\Exception\custom\CodeSpecialException;
use App\Exception\custom\TestException;
use Validate\TestValidate;

class TestController extends Base
{

    public function IndexAction()
    {
        /**
         * 假设当前环境为 dev（在php.ini中配置）
         * 当前 appid 为 ProgramA （在conf/application.ini中配置）
         * 则下面将取到 yaconf/test.ini 中， [dev-ProgramA] 下定义的配置 a 的值
         */
        echo config("test", "a");

        /**
         * 模拟抛出兼容老版本/app工厂的异常
         */
        throw new CodeSpecialException("wechat_not_match");

        /**
         * 模拟抛出用户自定义异常
         */
        throw new TestException([
            'cus' =>1
        ]);

        /**
         * 模拟验证参数
         */
        (new TestValidate())->scene("add")->validate();



        /**
         * 模拟正常返回结果
         */
        $this->success([1]);


        /**
         * yaconf 配置文件规则

        api php相关公共配置仓库，包含所有数据字典，公共配置文件及各项目特有配置文件。

        以mysql.ini为例,里面包括多个项目多个环境的继承关系

        节 的格式结构如下
        公共的配置内容，不区分应用及环境
        [commen]

        ;地铁项目配置
        地铁项目继承common + 自己的配置，此节中配置会覆盖父级的相同配置（不区分环境）
        [metro : commen]

        地铁项目继承common + 自己的配置 + 生产环境特有有配置，此节中配置会覆盖父级的相同配置
        [product : metro : commen]

        地铁项目继承common + 自己的配置 + 测试环境特有有配置，此节中配置会覆盖父级的相同配置
        [pre : product : metro : commen]
        [test : product : metro : commen]
        [dev : product : metro : commen]




        ;VPN项目配置
        VPN项目继承common + 自己的配置，此节中配置会覆盖父级的相同配置（不区分环境）
        [hubble : commen]

        VPN项目继承common + 自己的配置 + 生产环境特有有配置，此节中配置会覆盖父级的相同配置
        [product : hubble : commen]

        VPN项目继承common + 自己的配置 + 测试环境特有有配置，此节中配置会覆盖父级的相同配置
        [pre : product : hubble : commen]
        [test : product : hubble : commen]
        [dev : product : hubble : commen]

         */

    }
}
