Enhancement(機能追加・改善) #4178
Task(タスク) #4112: PHP7対応のための修正を行う
LExpress/symfony1 に移行する
100%
説明
Overview (概要)¶
現行の安定版である OpenPNE 3.8.x では symfony 1.4.13 を同梱している。
symfony 1.4 のソースコードには sfWebResponse::normalizeHeaderName()
メソッドのように、PCRE 関数の /e
修飾子に依存しているコードがいくつか存在しており、このようなコードは PHP7 では動作しない (#4112-2)
また、symfony 1.4 に同梱されている Doctrine1 も PHP7 で動作しない問題を抱えている (#4112-2)
symfony1 は既にメンテナンスを終了しており (参照) 、今後も PHP7 への対応が行われることは無い。
一方で、symfony 1.4 から fork したプロジェクトとして LExpress/symfony1 が存在する。
この LExpress/symfony1 では上記に挙げている PHP7 における問題も既に修正が済んでおり、現在もなお開発が続けられている。
symfony 1.4 から PHP7 対応に必要な修正を独自に行うよりは、OpenPNE3 で使用する Web フレームワークを LExpress/symfony1 に移行することが望ましいと考える。
Spec (仕様)¶
OpenPNE の lib/vendor/symfony/
以下に同梱されている symfony 1.4.13 (2011-08-05) を LExpress/symfony1 1.5.9 (2017-02-09) に変更する。
LExpress/symfony1 の README.md では Composer や git submodule によるインストールが説明されているが、少なくとも OpenPNE 3.10.x では OpenPNE 3.8 からの移行の障壁をなるべく取り除くために、これまでと同様に単にソースコードをリポジトリ内に同梱することで対応する。
子チケット
関係しているリビジョン
replace with LExpress/symfony1 v1.5.9 (refs #4178)
apply patch to symfony for #3956 (refs #4178)
update library dependency for NOTICE (refs #4178)
use doctrine.configure event instead of ProjectConfiguration::configureDoctrine() (refs #4178)
define alias to Doctrine_Core class for backward compatibility (refs #4178)
use doctrine.filter_model_builder_options event instead of doctrine_model_builder_options config (refs #4178)
drop opJsonApiActions::renderJSON() method replaced by sfAction::renderJson() (refs #4178)
履歴
#1 Youichi Kimura がほぼ7年前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
下記 Pull Request にて移行しました
https://github.com/openpne/OpenPNE3/pull/456
#3 Shinichi Urabe がほぼ7年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
#5 kaoru n がほぼ4年前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- 担当者 を Youichi Kimura から kaoru n に変更
#7 Rimpei Ogawa がほぼ4年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
こちらのチケットも https://redmine.openpne.jp/issues/4176#note-13 同様にリリース済みのものと残りの分でチケットを分けましょう。
特にBackportの方で「LExpress/symfony1 に移行する」の変更全体が 3.10.1 で行われた変更のように見えるとよくないです。