XIUNO全局变量

凨影 947

全局变量
  1. $starttime

  2. $time

  3. $conf

  4. $ip

  5. $longip

  6. $ajax

  7. $method

  8. $db

  9. $cache

  10. $errno

  11. $errstr

$starttime

脚本执行的开始时间,单位为毫秒,格式:1448335223.1877 。

一般用来计算程序执行时间。

【定义】 文件:xiunophp/xiunophp.php 大约 40 行:

$starttime = microtime(1);

【注意】

XiunoPHP 在被 include 后,会初始化十几个常用的全局变量,请注意命名不要冲突。

$time

脚本执行的开始时间,单位为秒,格式:1448336550 。

通用的 UNIX 时间戳。

【定义】 文件:xiunophp/xiunophp.php 大约 41 行:

$time = time();
$conf

应用的全局配置,格式为数组,一般通过配置文件包含返回。

非强制要求,开发较大型的项目时建议设置。

【定义】 文件:xiunophp/xiunophp.php 大约 63 行:

empty($conf) AND $conf = array('db'=>array(), 'cache'=>array(), 'tmp_path'=>'./', 'log_path'=>'./', 'timezone'=>'Asia/Shanghai');

【用例】

【conf.php】
<?php
```
```
//xiunophp 依赖的配置
    'db'=>array(
        'type'=>'pdo_mysql',
        'pdo_mysql' => array (
            'master' => array (                             
                'host' => 'localhost',              
                'user' => 'root',
                'password' => 'root',   
                'name' => 'test',
                'charset' => 'utf8',     
               'tablepre'=>'bbs_',
                'engine'=>'myisam',  // innodb
            ),          
            'slaves' => array()
        )
    ),
    'tmp_path' => './',         // 可以配置为 linux 下的 /dev/shm ,通过内存缓存临时文件
    'log_path' => './'
);
?>
$ip

客户端的 IP 地址,格式为:202.106.0.20 。

在开启 CDN 后,它会获取 CDN 转发过来的 IP 。

【定义】 文件:xiunophp/misc.func.php:

$ip = ip();

【用例】

【ip()】

// 不安全的获取 IP 方式,在开启 CDN 的时候,如果被人猜到真实 IP,则可以伪造。
function ip() {
    global $conf;
    $ip = '127.0.0.1';
    if(empty($conf['cdn_on'])) {
        $ip = $_SERVER['REMOTE_ADDR'];
    } else {
        if(isset($_SERVER['HTTP_CDN_SRC_IP'])) {
            $ip = $_SERVER['HTTP_CDN_SRC_IP'];
        } elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            $arr = array_filter(explode(',', $ip));
            $ip = end($arr);
        } else {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
    }
    return long2ip(ip2long($ip));
}
$longip

客户端的 IP 地址的 long 格式:2130706433 。

一般用 4 个字节的 unsigned int 记录到数据库。

【定义】 文件:xiunophp/xiunophp.php 大约 50 行:

$longip = ip2long($ip);
$ajax

是否为 AJAX 请求,值为 TRUE/FALSE 。

浏览器在发送 AJAX 请求的时候,会发送特定的头信息,会被当做判断依据。

【定义】 文件:xiunophp/xiunophp.php 大约 55 行:

$ajax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower(trim($_SERVER['HTTP_X_REQUESTED_WITH'])) == 'xmlhttprequest';
$method

判断 HTTP 请求的方法 ,默认值为 GET。

【定义】 文件:xiunophp/xiunophp.php 大约 77 行:

$method = $_SERVER['REQUEST_METHOD'];
$db

默认数据库实例

如果配置文件设置了数据库相关的配置,则框架会自动实例化一个 DB 类。

一般不用直接使用这个变量,除非在升级,转换需要多个连接的时候。

一般用 db_find(), db_find_one(), db_exec(), db_count() 函数来操作数据库。

【定义】 文件:xiunophp/xiunophp.php 大约 76 行:

$db = !empty($conf['db']) ? db_new($conf['db']) : NULL;

【用例】

find_one("SELECT * FROM bbs_user LIMIT 1");

【conf.php】

// xiunophp 依赖的配置
    'db'=>array(
        'type'=>'pdo_mysql',
        'pdo_mysql' => array (
            'master' => array (                             
                'host' => 'localhost',              
                'user' => 'root',
                'password' => 'root',   
                'name' => 'test',
                'charset' => 'utf8',                
                'engine'=>'myisam',  // innodb
            ),          
            'slaves' => array()
        )
    ),
    'tmp_path' => './',         // 可以配置为 linux 下的 /dev/shm ,通过内存缓存临时文件
    'log_path' => './'
);
$cache

默认缓存实例

如果配置文件设置了缓存相关的配置,则框架会自动实例化一个 Cache 类。

一般不用直接使用这个变量,除非在升级,转换需要多个连接的时候。

一般用 cache_set(), cache_get() 函数来操作缓存。

使用时,需要配置好 Cache 服务和 PHP 相关的 Cache 扩展,目前支持:apc|xcache|memcached|redis|mysql 。

如果为单机,建议使用 xcache,速度比较快,相关文档:http://bbs.xiuno.com/thread-8762.htm 。

【定义】 文件:xiunophp/xiunophp.php 大约 77 行:

$cache = !empty($conf['cache']) ? cache_new($conf['cache']) : NULL;

【用例】

set('key1', 'value1');
$cache->get('key1');

【conf.php】

 //xiunophp 依赖的配置
    'cache'=> array(
        'enable' => TRUE,
        'type'=> 'xcache', // apc|xcache|memcached|redis|mysql
        'memcached'=> array (
            'host'=>'localhost',
            'port'=>'11211',
        ),
        'redis'=> array (
            'host'=>'localhost',
            'port'=>'6379',
        ),
    ),
    'tmp_path' => './',         // 可以配置为 linux 下的 /dev/shm ,通过内存缓存临时文件
    'log_path' => './'
);
$errno

错误号,为 0 时,表示正常,非 0 时表示错误。

在某些函数被调用后发生错误,该全局变量会被设置,有点类似于 Linux C 的 errno 。

因为 PHP 是同步的(区别于异步)并且线程安全的,所以使用这种方法来返回错误会很方便。

一般配合 errstr 一起使用,函数内通过 xn_error($errno, $errstr) 设置错误。

相比起抛出异常来,这种处理方式会轻量级很多。

【定义】 文件:xiunophp/xiunophp.php 大约 58 行:

$errno = 0;

【相关函数】

xn_error()
$errstr

错误字符串,与 $errno 配合使用。

【定义】 文件:xiunophp/xiunophp.php 大约 58 行:

$errstr = '';

【相关函数】

xn_error()


TAGS

联系QQ:77798085 赞助请点这里

上一篇:XiunoPHP入门

下一篇:XIUNO数据库函数

管理员回复
全部回复 (10)
  • 楼主很辛苦,若是不回帖,心里过意不去,可是我打字实在不行,只好快速回复了,楼主不要见怪!
    亚太地区
    这个人很有个性,连签名都没有!
  • nich01163com 2020-7-7
    3
    沙发我没有,板凳我没有,板也没有,只好站在后面排队支持!
    亚太地区
    这个人很有个性,连签名都没有!
  • 小琪琪来啦 2020-7-7
    4
    楼主,我只是来混个熟的!老板,侬亿雷凑闹嫩了。
    亚太地区
    这个人很有个性,连签名都没有!
  • nich01163com 2020-7-7
    5
    心随我动,想回就回。
    亚太地区
    这个人很有个性,连签名都没有!
  • lc_118163com 2020-7-7
    6
    楼主,我只是来混个熟的!老板,侬亿雷凑闹嫩了。
    亚太地区
    这个人很有个性,连签名都没有!
  • 669356769qqcom 2020-7-7
    7
    面对如此强贴,论遇到多大阻力,只要我一息上尚存,就绝不会让它沉沦下去,这一点请楼主放心。
    亚太地区
    这个人很有个性,连签名都没有!
  • zhoutianyunmei 2020-7-7
    8
    平时只看不回,到现在才发现,和很多金币擦肩而过了。
    亚太地区
    这个人很有个性,连签名都没有!
  • dd 2020-7-7
    9
    看帖必回是好习惯!
    亚太地区
    这个人很有个性,连签名都没有!
  • 时时彩计划 2020-7-7
    10
    谢谢楼主,楼主辛苦!
    亚太地区
    这个人很有个性,连签名都没有!
  • bzvtc 2020-7-7
    11
    与人为善, 好运常伴!
    亚太地区
    这个人很有个性,连签名都没有!