Service.Action 取值 $_GET $_POST $_COOKIE


Introduction

简称: GPC

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

获取的值会自动使用PHP内置函数 trim 进行过滤, 不修改PHP原始全局变量值(copy-on-write)

如果形参带默认值时, 当在全局变量中找不到变量时生效, 如果都找不到值, 会被赋值特殊变量 NULL, 减少 PHP Notice 产生

备注: 形参顺序规则 与 实参顺序规则 无先后顺序

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($this->getRequest());
    }
}