Asf_Sg


Introduction

简称: SG, 不区分大小写, 全称 Super Globals

简短的命名方式讨人喜欢, 包括写入、读取、删除、检查四个功能项, 全局变量生命周期直到PHP脚本执行结束时(OR 收到退出指令时)才释放。

SG类随着框架启动默认注册三个子元素(GPC):

使用SG类读写全局变量会影响PHP全局变量的原始值。

这里提供了两种方式操作全局变量:

在开启命名空间情况下(asf.use_namespace=1)类名为 Asf\Sg

Class synopsis

<?php
final class Asf_Sg
{
    public static $inputs = array('get' => array(), 'post' => array(), 'cookie' => array())

    public static boolean has(string $name)
    public static mixed   get(string $name [, mixed $default_value = null])
    public static boolean set(string $name, mixed $value)
    public static boolean del(string $name)
}

boolean SG::has(string $name)

Check for global variables exists, Support for decimal point lookup

mixed SG::get(string $name [, mixed $default_value = null])

Get a global variable value, Can be used anywhere. Support for decimal point lookup

Returns a 'null' default value if the '$name' is not found

If '$name' is found and is a string, the function php_trim is called automatically

boolean SG::set(string $name, mixed $value)

set a global variable value

boolean SG::del(string $name)

delete a global variable

Examples

Example #1 Global variable operation

<?php
use Asf\Sg;

$name = 'test';
$str = 'A apple';

Sg::$inputs['what'] = $str;

var_dump(Sg::$inputs['what']); // string(7) "A apple"
var_dump(Sg::get($name)); // NULL
var_dump(Sg::set($name, 'abc123')); // bool(true)
var_dump(Sg::has($name)); // bool(true)
var_dump(Sg::get($name)); // string(6) "abc123"
var_dump(Sg::del($name)); // bool(true)
var_dump(Sg::get($name)); // NULL
var_dump(Sg::has($name)); // bool(false)


Sg::$inputs['post']['list']['product'] = 'asf';
var_dump(Sg::get('post.list.product')); // string(3) "asf"
var_dump(Sg::has('post.list.product')); // bool(true)
var_dump(Sg::get('post.list.cat', 'dvalue')); // string(6) "dvalue"

Sg::set($name, ' trim_test ');
var_dump(Sg::get($name)); // string(9) "trim_test"

unset($name);

sg::set('cat.0', 100); // Sg::$inputs['cat'][1] = 200;
sg::set('cat.1', 200); // Sg::$inputs['cat'][0] = 100;
var_dump(sg::get('cat.0')); // int(100)
var_dump(sg::get('cat.1')); // int(200)

Example #2 GPC management is so simple

<?php
use Asf\Sg;

/* Recommend Short name */
sg::get('g');
sg::get('p');
sg::get('c');

/* Not Recommend */
sg::$inputs['get'];
sg::$inputs['post'];
sg::$inputs['cookie'];
sg::get('get');
sg::get('post');
sg::get('cookie');

/* Get sg::inputs['get']['user'] OR $_GET['user'] */
sg::get('g.user');

/* Get sg::inputs['post']['user'] OR $_POST['user'] */
sg::get('p.uesr');

/* Get sg::inputs['cookie']['user'] OR $_COOKIE['user'] */
sg::get('c.user');

Example #3 Store Object

<?php
use Asf\Sg;

$cookie = new Asf_Http_Cookie(['path' => '/', 'domain' => 'box3.cn', 'expire' => 3600, 'secure' => 1, 'httponly' => 1, 'prefix' => 'Asf_']);

Sg::set('cookie', $cookie);
Sg::get('cookie');