* PHP7対応 [#y99b2374]

- ページ: [[BugTrack2]]
- 投稿者: [[umorigu]]
- 優先順位: 重要
- 状態: 提案
- カテゴリー: 本体新機能
- 投稿日: 2016-01-03 (日) 07:32:46
- バージョン: 1.5.0

** メッセージ [#z123c55f]
2015/12/03 に PHP7 が リリースされました。 [[php.net:archive/2015.php#id2015-12-03-1]]

現状の最新版である PukiWiki 1.5.0 は PHP7 で動作しないので修正が必要です。

----

PukiWiki 1.5.0 を PHP7 で動作させたときの表示:

 Parse error: syntax error, unexpected 'new' (T_NEW) in C:\d\p7\lib\func.php on line 531


関連情報:
- Migrating from PHP 5.6.x to PHP 7.0.x -- [[php.net:manual/en/migration70.php]]

分かっている問題:
- 1. 新しいオブジェクトを参照渡しで代入できない - 「new 文の結果を参照渡しで変数に代入することができなくなりました。」
-- [[php.net:manual/ja/migration70.incompatible.php#migration70.incompatible.other.new-by-ref]]
- 2. 変更された関数 - preg_replace() 関数が "\e" (PREG_REPLACE_EVAL) をサポートしなくなりました。
-- [[php.net:manual/ja/migration70.changed-functions.php#migration70.changed-functions.core]]
-- 注釈の抽出に $NotePattern (lib/html.php, lib/init.php) で利用されている
-- 同一個所のバグ: [[BugTrack2/22]] 見出しと目次に含まれる注釈の構文定義の揺れ (正規表現のパッチ)
-- 同一個所のバグ2: [[BugTrack2/358]] XAMPPの特定バージョンで「テキスト整形のルール」 FormattingRules を表示できない
- 3. navi.inc.php のNextリンクが不正。リンク先がparentと同じになっている
-- arrayの内部ポインタの挙動の違いによるもの (current関数)
--- wiki.php.net/rfc/php7_foreach
--- qiita.com/hnw/items/c79458dead338a554a13

--------
- & new Class() の構文がサポートされなくなったようなので、PHP4との両対応が難しくなっています -- [[umorigu]] &new{2016-01-03 (日) 07:35:26};
- ふむ・・・ Deprecated になったといういう記載は無さそうですね -- [[henoheno]] &new{2016-01-05 (火) 21:33:02};
- ここのようです。 [[php.net:manual/ja/migration70.incompatible.php#migration70.incompatible.other.new-by-ref]] PHP 5.6.x から PHP 7.0.x への移行 - 下位互換性のないその他の変更 - 新しいオブジェクトを参照渡しで代入できない - 「new 文の結果を参照渡しで変数に代入することができなくなりました。」 -- [[umorigu]] &new{2016-01-05 (火) 23:36:57};
- '& new Class' を 'new Class' に変えるだけで PHP7 でも動作するようになりました。 [[sfjp:projects/pukiwiki/scm/git/pukiwiki/commits/1335e0eb3e1dafa2876e76cd8a21df1a3283b716]]  PHP4でも動作しているように見えるのですが、問題があることをどうやって確認しよう・・・ -- [[umorigu]] &new{2016-01-06 (水) 01:06:38};
- officialとdevのデータをPHP4.1と7で表示してみて差分をとる方法を考えました -- [[umorigu]] &new{2016-01-06 (水) 01:42:52};
- 正直、今回のPHP7は今までの流れから大きく方向転換してイマドキの設計思想を採用しています。PHP4と完全互換で同一スクリプトというのは難しいのではないでしょうか -- [[NoName]] &new{2016-01-07 (木) 11:29:48};
- なので、PHP4や古い環境向けのバグFIXのみを1.5系に残しつつ1.5系からPHP7に最適化した1.6系を作ったほうが早い気がします。 -- [[NoName]] &new{2016-01-07 (木) 11:31:57};
- 新しいオブジェクトを参照渡しで代入できない は、[[BugTrack2/146]]みたく結果をバッファに入れてからなら参照渡しできるのかな?と思ったけど、[[php.net:manual/language.operators.assignment.php]]からするとPHP4だけ最初は丸々コピーされる状況がリビジョン:1335e0eb3e1dafa2876e76cd8a21df1a3283b716 と変わらない気がするので意味ないかな~と思い直す…(お役に立てなさそうだ…) --  &new{2016-01-07 (木) 20:03:47};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.010 sec.

SourceForge