静态变量的范围

时间:2014-11-17 03:54:40

标签: php static-methods

有人可以向我解释为什么动态调用页面的静态变量不会显示指定的值。

对于测试,我创建了3个文件。

1)test_scope_1.php:该文件具有静态方法/变量的类。

2)test_scope_2.php:包含对上面一个方法的调用以输出内容。

3)test_scope_render.php:这会将变量分配给文件1中的类,然后输出来自类的内容,有一个容器可以在单击按钮时替换dom元素,并在最后输出档案2。

基本上初始输出和第二个文件的输出正确显示在数组中正确的元素数量但是当单击按钮动态加载数组时,它返回0.根据我的理解,这些值以某种方式超出范围,但不是可以从任何地方访问静态变量?

以下是第一个文件的内容。

1)test_scope_1.php

class ScopeTest
{
    private static $sample_array=array();
    public static function push($value)
    {
        self::$sample_array[]=$value;
    }
    public static function render()
    {
        echo "ARRAY COUNT ".count(self::$sample_array);
        foreach (self::$sample_array as $index=>$value)
        {
            echo "INDEX=>".$index." VALUE=>".$value;
        }
    }
}

2)test_scope_2.php

include_once "test_scope_1.php";
echo "This is another file test_scope_2.php<br>";
echo ScopeTest::render();

3)test_scope_render.php

<?php 
    ScopeTest::push(12);
    ScopeTest::push(15);
    ScopeTest::push(13);
    ScopeTest::push(14);
    ScopeTest::push(27);
    //This outputs the above entries
    ScopeTest::render();
    //This as well outputs the above entries with array count
    include_once "test_scope_2.php";
?>
//The problem arises here when the button is clicked
clicking on the button will get all the array from above from ajax call.
<button id='the_bomb'>click for magic</button>
<div id='replace_this' style='color:red'>
    This will be replaced.
</div>

这是输出图像,显示的输出顺序与此处发布的代码不匹配,第二个输出和第三个输出互换。 Image of the output

0 个答案:

没有答案