gpt4 book ai didi

php - 可以在 PHP7 下运行 symfony 1.4 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:30 27 4
gpt4 key购买 nike

是否可以在 PHP7 下运行 symfony 1.4?

如果是,必须进行哪些更改?

最佳答案

对于那些想在 symfony 1.4 和 PHP7 上使用 doctrine 1.2 的人!

在 %SF_LIB_DIR%/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/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/Adapter/Statement/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);

学说/连接/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 修饰符 'e'。通过这些修改,doctrine 1.2 将继续适用于 PHP7,也适用于 PHP5!

关于php - 可以在 PHP7 下运行 symfony 1.4 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34354197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com