* 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}; #comment