【发布时间】:2012-06-05 20:17:19
【问题描述】:
我对 php 很生疏,正在学习如何使用类,现在发生了一些奇怪的事情,这可能就是 php 的工作原理——我不确定。
我有一个对类(项目)来说是静态的数组,我想做的是在页面加载后立即填充数组(在 index.php 中),然后使用其中的项目填充数据。但我也想在其他php文件(比如我的ajax_show_timesheet.php)中使用SAME项目数组。
当我尝试从另一个 php 文件访问数组时:
Project::$projectArray[key];
数组为空。如果我打电话给
Project::createProjects();
再次从另一个 php 文件中重新填充。
那么为什么我不能从不同的 .php 文件中访问同一个静态数组呢?
这是我正在做的事情:
类项目:
class Project
{
public static $projectArray;
public $projectID;
public function __construct($projID=0){
$this->projectID = $projID;
}
public static function createProjects(){
$projectResult = mysql_query("SELECT * FROM $tblProjects");
$numRows = mysql_numrows($projectResult);
$i = 0;
while($i < $numRows){
//for each project in the DB, add one to the array
Project::$projectArray[mysql_result($projectResult, $i, "projectID")]
= new Project(mysql_result($projectResult, $i, "projectID"));
$i++;
}
}
}
在 index.php 我填写初始化项目:
Project::createProjects();
在 ajax_show_timesheet.php 我做了类似的事情:
echo Project::$projectArray[key]->projectID
而我什么也得不到。
任何关于如何在多个文件中使用静态变量的帮助都会很棒!
【问题讨论】:
-
您是否在同一个请求中访问这两个文件?或者,如果您不通过 http 访问它们,您如何称呼它们?
-
@NathanielFord 我不太确定你的意思(再次,新手)。当我调用 ajax_show_timesheet 时,它是通过 ajax,所以我猜....这是一个不同的请求?
-
所以,AJAX 将创建一个新的请求/响应。这由 Web 容器单独处理。容器会将其视为原始进程(这样两个客户端就不会非法使用相同的数据)。我认为有一些方法可以缓存某些数据,但这不是一个好主意。
标签: php class variables static