2011-03-11 68 views
0

我需要让我们的服务器在php5上运行,但我们有一个旧的CMS,有我需要bandaid的问题,直到我们有时间有一个新的CMS设置和旧数据(关于4000页与伟大的SEO)移动。PHP4到PHP5升级 - 设置类属性

旧的CMS的胆量会加载/保存页面数据作为类变量/属性,然后序列化并保存到一个文件中,并且使用非序列化来使用,全部由类中的方法使用。

$this = $ToolBox->fileUnSerialize($myFile); 

您不能在php5中这样做,因为您无法重新分配$ this变量。

我可以这样做:

$vardata = $ToolBox->fileUnSerialize($myFile); 
$this->var1 = $vardata->var1; 
$this->var2 = $vardata->var2; 

但也有超过50个变量。有没有更好的办法?

回答

2

你可以简单的foreach对所有属性将它们复制过来:

$vardata = $ToolBox->fileUnSerialize($myFile); 
foreach ($vardata as $_attribute => $_value) { 
    $this->$_attribute = $_value; 
} 
+0

谢谢,这对于大部分工作,但阵列没有得到正确设置。 – EricImprint 2011-03-11 16:22:58

+0

它应该适用于数组。 (刚刚测试过)。它遍历属性而不管类型。请指定它为您绊倒的数组或结构。 – mario 2011-03-11 16:27:46

+0

它正在工作,我现在有其他问题...谢谢。 – EricImprint 2011-03-11 21:53:37