2015-12-18 107 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合作!