全局PHP变量是否始终在运行时包含其最新值?

时间:2012-02-03 15:56:53

标签: php

情景:

  1. 有一个全局数组$cache
  2. 有一个功能cacheWriter(),用于更新$cache 各种可缓存的对象。 cacheWriter()运行一个switch() 不同的情况,每个更新$cache中的某个键。
  3. cacheWriter()中的某些情况正确依赖于其他情况 更新$cache。在这些情况下,脚本会检查数组键 它取决于$cache中已经存在,如果没有,它会调用 从内部cacheWriter()得到它需要的案例。
  4. 在这些情况下,$cache是否已更新并包含新内容,或仅在下次运行该功能时?

    示例:

    function cacheWriter($case) {
        global $cache;
    
        if($cache[$case]) {
            $out = $cache[$case];
    
        } else {
    
            switch($case) {
                case 1 : 
                    $cache[1] = 'some object';
                break;
    
                case 2 :
                    if(!$cache[1]) {
                        $dummy = cacheWriter(1);
                    }
    
                    //QUESTION:
                    //will $cache[1] now exist right here (since it's global)
                    //so that I can now simply access it like this:
    
                    $cache[2] = $cache[1]->xyz;
    
                    //OR,
                    //do I have to use $dummy to get [1]
                    //and $cache[1] will only exist the next time the function runs?            
    
                break;
            }
    
            $out = $cache[$case];
        }
    
        return $out;
    
    }//cacheWriter()
    

    显然,这个功能非常简单,但它是基本概念。谢谢!

1 个答案:

答案 0 :(得分:2)

是的,全局的值将包含最后一次写入。 global指令用于作用域目的,告诉解释器使用哪个变量 - 它实际上并不“导入”该值并在此时保持它。