php中的全局变量区别与javascript中的全局变量

在最近的项目当中使用的是phalapi框架,但是使用到了redis 发布者订阅者的模式,需要长时间开启监听的服务,故而服务那块实现的是原生的php,单项目框架当中都提倡将一些常用的配置提取到对应的地方,方便多个开发环境进行切换,因此使用到

//redis配置
defined('CONFIG_ROOT') || define('CONFIG_ROOT', dirname(__FILE__) . '/..');
$resConfig=require_once CONFIG_ROOT . '/../config/app.php';
$config = $resConfig["redisCon"];

// 回调地址
defined('SUBSCRIBE_URL') || define('SUBSCRIBE_URL', $resConfig['subscribeUrl']);    //一开始这个地方使用的是变量,但是在回调函数的内部一直无法访问到该变量,受写过js的误解在函数外部定义的变量在函数内部可以正常的使用

date_default_timezone_set('Asia/Shanghai');
$redis = new Redis();
$redis->connect($config['host'], $config['port']);
$redis->auth($config['auth']);
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$redis->psubscribe(array(
    '__keyevent@15__:expired'
), 'callbackEnd');
$redis->subscribe(array('distribute'), 'callback');

//订阅回调
function callback($redisObj, $channel, $msg)
{
    $url = SUBSCRIBE_URL;
    switch ($channel) {
        case 'distribute':
            try {
                writeLog('回调的信息:' . $msg);
                $data = json_decode($msg, true);
                // 转发到微信接口
                $httpUrl = $url . ".....";

.....

这样写才可以在代码执行当中正常的访问到该变量

先将php中的变量和常量的经验总结如下:

php变量的作用域可以分为三种

一、全局变量;

简单理解,就是函数外部定义的变量,只能在函数外部进行访问(并不是js语法当中的全局变量,一定要注意)

二、局部变量;

其实就是函数内部定义的变量,只能在函数内部使用,等同于js中定义的局部变量

三、超全局变量;

系统定义的变量,包括的全部变量,任何地方都能访问

如何实现函数内部与函数外部的互相访问?

首先看一段代码,这样是无法运行的

1

2

3

4

5

6

7

8

$a="123";

 

function fun(){

 

    echo $a;

     

}

fun();

解决办法有三种:

1、在函数中传入参数$a

1

2

3

4

5

6

7

8

$a="123";

 

function fun($a){

 

    echo $a;

     

}

fun($a);

2、使用超全局变量$GLOBALS在函数内部进行访问

1

2

3

4

5

6

7

8

$a="123";

 

function fun(){

 

    echo $GLOBALS['a'];

     

}

fun();

3、实现全局和局部的互相访问。使用Global关键字

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

全局空间已存在变量,局部访问全局

$a="123";

 

function fun(){

 

   global $a;

   echo $a;

     

}

fun();

 

全局空间不存在这个变量,全部访问局部

 

function fun(){

 

   global $a;

   $a="123";

}

fun();

echo $a;

 

该模块参考的博文地址是:https://www.cnblogs.com/dumenglong/p/11183884.html

再来解释一下php中的常量,常量常用于存储不经常改变的数据信息的量,常量的值被定义之后,在程序整个执行期间,这个值都有效,并且不可再次赋值。

真正意义上的php全局变量是被定义在所有函数外面的变量,其作用域是整个php文件,但是在用户自定义的内部是不可用的,想要在用户自定义的函数内部使用全局变量,要使用global关键字生命才可以。

 

 


                

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值