2015-12-18 53 views

回答

3

退房这个问题,这是关系到你的问题: Symfony 1.4 using deprecated functions in php 5.5

根据您的代码库,我想你最好的选择是升级到Symfony的2或3 或者你可以使用这个项目,它支持5.6 (未来可能有7种):https://github.com/LExpress/symfony1

+0

他们加了PHP 7支持 –

+0

@MichaelNoyb你能提供一个链接吗? – yeouuu

+0

只需通过https:// github访问回购。COM/LExpress/symfony1“所有的改进和BC符在WHATS_NEW文件中列出,这包括: DIC 作曲支持 PHP 7.0支持 的性能提升”我打开我已经高度定制1.4叉1.5.8(运行PHP 5.5),到目前为止,它对现有代码的改动很小,效果很好。很快会升级到7.0,看看是否有问题出现 –

1

对于那些想使用symfony 1.4和PHP7的教条1.2的人!

在%SF_LIB_DIR%/供应商/ symfony的/ lib目录/插件/ sfDoctrinePlugin/lib中/供应商/学说/教义/ Collection.php线463,你会发现:

$record->$relation['alias'] = $this->reference; 

在PHP 5中这被解释为

$record->${relation['alias']} = $this->reference; 

作者的意图。在PHP7中,它将被解释为

${record->$relation}['alias'] = $this->reference; 

什么导致关系错误。

为了解决这个问题,只是使隐性明确:

$record->${relation['alias']} = $this->reference; 

而这个问题已经一去不复返了。

另外,你有以下原则文件,以改变:从

$query = preg_replace("/(\?)/e", '":oci_b_var_". $bind_index++' , $query); 

主义/适配器/ Oracle.php 线586

$query = preg_replace_callback("/(\?)/", function() use (&$bind_index) { return ":oci_b_var_".$bind_index++; }, $query); 

主义/连接/ Mssql.php 线264 from

$tokens[$i] = trim(preg_replace('/##(\d+)##/e', "\$chunks[\\1]", $tokens[$i])); 

$tokens[$i] = trim(preg_replace_callback('/##(\d+)##/',function ($m) use($chunks) { return $chunks[(int) $m[1]]; }, $tokens[$i])); 

和线路415

$query = preg_replace('/##(\d+)##/e', $replacement, $query); 

$query = preg_replace_callback('/##(\d+)##/', function($m) use ($value) { return is_null($value) ? 'NULL' : $this->quote($params[(int) $m[1]]); }, $query); 

为PHP7没有预浸修改 'E' 了。通过这些修改,1.2版原则将继续与PHP7协同工作,并且正在与PHP5合作!