我确实尝试在不同的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;
}
}
答案 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应用程序的新执行,因此所有静态变量都将重置。
如果需要在请求之间“保留”某些值,则需要将这些值存储在数据库,本地驱动器或其他类型的存储中。您也可以考虑使用会话。