2015-12-18 3 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.ком/Lexpress/symfony1 «Все усовершенствования и BC брейки перечислены в WHATS_NEW файла, это включает в себя: DIC поддержка Composer PHP поддержка +7,0 повышение производительности » Я включил мой уже сильно настроенный 1,4 вилки 1.5.8 (бег PHP 5.5), и до сих пор он хорошо работает с минимальными изменениями в существующем коде. Скоро будет обновление до 7.0, чтобы узнать, всплывают ли какие-либо проблемы –

1

Для тех, кто хочет использовать доктрину 1.2 с symfony 1.4 и PHP7!

В% SF_LIB_DIR%/поставщика/Symfony/Библиотека/плагины/sfDoctrinePlugin/Библиотека/поставщика/доктрина/Доктрина/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; 

и эта проблема исчезла.

Кроме того, вы должны изменить в следующих Doctrine файлы: Doctrine/адаптер/Oracle.php линии 586 от

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

в

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

Doctrine/Связь/Mssql.php линии 264 от

$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 не имеет PREG модификатор 'е' больше. С этими изменениями доктрина 1.2 будет продолжать работать с PHP7 и работать с PHP5 тоже!