【问题标题】:WIll it be possible to run symfony 1.4 under PHP7?能否在 PHP7 下运行 symfony 1.4?
【发布时间】:2023-04-06 20:20:01
【问题描述】:

symfony 1.4 可以在 PHP7 下运行吗?

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

【问题讨论】:

标签: php symfony-1.4


【解决方案1】:

对于那些想要将教义 1.2 与 symfony 1.4 和 PHP7 一起使用的人!

在 %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 文件: 教义/适配器/语句/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 一起使用!

【讨论】:

  • 这正好解决了问题。无需使用任何分叉或升级到更高的 symfony 版本。
  • 谢谢!这是为了修复Doctrine,symfony 1.4本身呢?在 PHP 7 上运行是否可行?
  • 想检查上述解决方案是否有助于 symonfy 1.4 项目使用 php7 运行项目?
【解决方案2】:

查看与您的问题相关的这个问题: Symfony 1.4 using deprecated functions in php 5.5

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

【讨论】:

  • 他们添加了 PHP 7 支持
  • @MichaelNoyb 你能提供一个链接吗?
  • 只需访问位于github.com/LExpress/symfony1 的 repo “所有增强和 BC 中断都列在 WHATS_NEW 文件中,其中包括:DIC Composer support PHP 7.0 support performance boost” 我切换了我已经高度定制的 1.4 fork到 1.5.8(运行 PHP 5.5),到目前为止它工作得很好,对现有代码的改动很小。将很快升级到 7.0,看看是否有任何问题弹出
  • @MichaelNoyb 你们在运行 php 7 的 symfony1.4 上有什么好消息吗?
  • @RajendraBadri 我们确实做到了。项目在 7.2 上运行成功且稳定。
猜你喜欢
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多