我对php很生疏,只是在学习如何使用类,现在发生了一些奇怪的事情,这可能就是php的工作方式 - 我不确定。
我有一个对类(Project)是静态的数组,我想做的是在加载页面后立即填充数组(在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++;
}
}
}
在索引中.php我填写初始化项目:
Project::createProjects();
在ajax_show_timesheet.php中,我做了这样的事情:
echo Project::$projectArray[key]->projectID
我什么也没回来。
有关如何跨多个文件使用静态变量的任何帮助都将很棒!
当你这样做时会发生什么?
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++;
}
var_dump(Project::$projectArray);
}
因为这表明您无法以现在的方式初始化静态变量。看起来您正在尝试像单例一样使用项目,但这不是 php 单例的工作方式。