Service.Action 取值 GPC ($_GET $_POST $_COOKIE)


Introduction

简称: GPC

采用Action方法形参方式, 读取PHP全局变量的值, 包括 $_GET, $_POST, $_COOKIE

所有形参获取的GPC值会自动使用PHP内置函数 trim 过滤, 会更新PHP全局变量的原始值

备注: 形参顺序规则 与 实参顺序规则 无先后顺序, 如果形参太多, 可以使用 Asf\Sg 来解决问题

GPC 使用帮助, 有且只有小写 $g_, $p_, $c_ 才生效, 默认采用 $g_ 方式取值

关于形参默认值说明

Examples

Example #1 以获取$_GET值为例, 有三种取值方式

<?php

use Asf\AbstractService as Service;

class IndexService extends Service
{
    public function indexAction($g_user)
    {
        // No.1
        var_dump($g_user);

        // No.2
        var_dump($this->getRequest()->getQuery());

        // No.3
        var_dump(Asf_Sg::$inputs);
     }
}

Example #2

$_GET, $_POST, $_COOKIE 参数获取变得很简单

<?php
class IndexService
{
    public function indexAction($g_user, $p_pass, $c_cookieid, $orderid)
    {
        var_dump($g_user, $p_pass, $c_cookieid, $oderid);
    }
}

Example #3 设置默认值

<?php
class IndexService
{
    public function indexAction($g_user = 'test', $p_pass = 123456, $c_cookieid = 'str', $orderid = 'mm100')
    {
        var_dump($g_user, $p_pass, $c_cookieid, $oderid);
    }
}

Example #5 Asf_Ensure 检查参数提交的完整性

Constants 文件的定义方法, 这里就不列举了

<?php

use Asf\Ensure; 

class IndexService
{
    public function indexAction($g_user, $p_pass, $c_cookieid, $orderid)
    {
        Ensure::notNULL($g_user, Constants::ERR_PARAMS_NAME);
        Ensure::notNULL($p_pass, Constants::ERR_PARAMS_PASS);
        Ensure::notNULL($c_cookieid, Constants::ERR_PARAMS_COOKIEID);
        Ensure::notNULL($orderid, Constants::ERR_PARAMS_ORDERID);

        var_dump($g_user, $p_pass, $c_cookieid, $oderid);
    }
}

Example #6 参数过多怎么办?

Asf 提供了两种解决方法

<?php

use Asf\Ensure; 
use Asf\Sg;
use Asf\AbstractService as Service;

class IndexService extends Service
{
    public function indexAction()
    {
        var_dump(Sg::$inputs);
        var_dump(Sg::get('get.user'));
        var_dump(Sg::get('post.user'));
        var_dump(Sg::get('cookie.user'));
        var_dump($this->getRequest());
    }
}