从不同PHP文件中的类的静态变量获取值

时间:2018-09-17 08:52:33

标签: php class

我确实尝试在不同的php文件中获取php类的静态变量。 但是在testpy.php中设置变量时,在taski.php中的变量为null

这是testpy.php

<?php
/**
 * Created by PhpStorm.
 * User: PC1
 * Date: 9/16/2018
 * Time: 3:00 PM
 */
include 'cacheData.php';
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_ERROR);
//echo $_POST["firstname"];
cacheData::$cacheArrayFirst = json_decode($_POST["firstname"]);
cacheData::converting(cacheData::$cacheArrayFirst);
echo json_encode(cacheData::$cacheArrayFinal);

这是taski.php

<?php
/**
 * Created by PhpStorm.
 * User: hamed
 * Date: 17/09/2018
 * Time: 12:37
 */
include 'cacheData.php';
sleep(5);
echo json_encode(cacheData::returnValue());

这是cacheData.php

<?php
/**
 * Created by PhpStorm.
 * User: PC1
 * Date: 9/16/2018
 * Time: 4:35 PM
 */

class cacheData
{
    public static $cacheArrayFirst;
    public static $cacheArrayFinal;
    public static function converting($cacheArrayOne){
        if (empty(cacheData::$cacheArrayFinal)){
            cacheData::$cacheArrayFinal=$cacheArrayOne;
        }
    }

    public static function returnValue(){
        return self::$cacheArrayFinal;
    }
}

1 个答案:

答案 0 :(得分:3)

您绝不会以任何方式从testpy.php呼叫taski.php。因此,当执行taski.php时,testpy.php中的代码将永远不会运行,因此不会设置变量。

例如,您可以在testpy.php中加入taski.php

<?php
include 'cacheData.php';
include 'testpy.php'; // <-Added
sleep(5);
echo json_encode(cacheData::returnValue());

可能是,您尝试从testpy.php访问由先前HTTP调用对taski.php设置的静态变量。 sleep可以表明这一点。 它无法正常工作-每个HTTP请求都是PHP应用程序的新执行,因此所有静态变量都将重置。

如果需要在请求之间“保留”某些值,则需要将这些值存储在数据库,本地驱动器或其他类型的存储中。您也可以考虑使用会话。

另请参阅:PHP Persist variable across all requests