パスワードを忘れた? アカウント作成
12609310 story
PHP

PHP 7リリース、言語仕様の大幅拡張と当社比2倍の性能アップを実現 46

ストーリー by hylom
7の世界へ 部門より
あるAnonymous Coward 曰く、

PHP開発チームは3日、ついに10年以上にわたるPHP 5の時代に終止符を打ち、「PHP 7.0.0」の公式リリースをアナウンスした(アナウンスOSDN Magazine)。

PHP 7ではメジャーバージョンが上がっただけのことはあり、大幅な改造が図られている。まず最も恩恵を受けやすいのが実行エンジンの見直しによる性能向上である。内部のデータ構造の見直しなどが図られた結果、その性能はPHP 5.6と比較して2倍高速になり、メモリ使用量も50%改善したという。これによりJITコンパイラを用いるHHVMにも匹敵するパフォーマンスとなっている。

言語仕様にも手が加えられており、Fatal Errorなどの致命的エラーの数々が例外として扱われるようになった他、無名クラスの導入や以前にも話題になったスカラー型宣言、戻り値の型宣言にNull合体演算子の導入など、多数の機能追加が行われている。また廃止予定とされてきたeregなど古いモジュールの削除も実施された。変更点の詳細については「PHP 5.6.x から PHP 7.0.x への移行」ページを参照されたし。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年12月07日 14時51分 (#2930106)

    非互換な変更をつらつら眺めたけど、一番怖そうなのはこれかな。

    > 変数やプロパティ、メソッドへの間接的なアクセスの扱いの変更
    http://php.net/manual/ja/migration70.incompatible.php#migration70.inco... [php.net]

    • by Anonymous Coward on 2015年12月07日 16時49分 (#2930215)

      php5の悪夢再び。
      #これが最後の糞仕様変更とは思えない。phpがあるかぎりいずれ第二第三の糞仕様変更が(ry

      これによる実際の変更箇所の「個数」は少ないかもしれないけれど、どこがその該当箇所であるかを
      検出し、それを等価な処理に変更したことを保証するのがべらぼうに面倒だったりするんだよ。

      それって現実的には変更コストが高過ぎて、事実上移植できなくなるってこと。
      結局はPHP6以前のコード(メジャーなフレームワークやライブラリも含む)は、
      7へ移植されることなしに消えていく運命なのかもね。

      親コメント
      • by Anonymous Coward

        糞仕様変更がない言語は死んだ言語だけだ。

        PHPは元々書き捨てみたいなもんでしょ。
        十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。

        • by Anonymous Coward

          >十年以上も使う保守主眼の重厚長大言語じゃないし、さっさと次の物を作った方が早い。
          2000年問題から何も学習しなかった老害さんか?

          そう言って放置した結果、現行製品の保守もできずに苦労していたPHP開発現場を私は知っている。
          そもそもそれで問題が無ければ、こんなに頻繁にフレームワークが入れ替わったりしないのではないか?

          • by Anonymous Coward

            それってPHPの存在全否定じゃないですか

            • by Anonymous Coward

              いまだに、たまにPHP4なアプリの改修案件とかが来るしなぁ。
              (自分とこが昔作ったコードの場合もあるし、余所が作ったコードの改修だけってのも)
              SQLインジェクションとか流行る前のコードだから、脆弱性ありまくりだったり。

              まだPHP5への移植案件の方が精神衛生的にうれしいんだけど、
              サーバ入れ替えとかテストのやりなおしとかの費用が出せないから、PHP4のまま。

              SQLインジェクション可能なのは瑕疵だから無償で直せとか言われて
              当時は問題として認識されておらず、それでそっちも検品してるんだから、
              金くれないと対応しない、と返して、それで未だに脆弱なままだったりとか

              #こんなのIDで書けないからAC

              • by Anonymous Coward

                自社開発だけど、秘伝のライブラリとかがPHP4時代からのものでいまだにそのコードに引きずられてるんで他人事とは思えない…

          • by Anonymous Coward

            2000年問題から何も学習しなかった老害さんか?

            どうみてもこの人の方がご年配の発想でちょっと笑っちゃった。

            10年後にPHPが動く環境が残ってるかなんて誰にも保証できないよw

            • by Anonymous Coward

              甘ちゃんだね。
              ふつーに残るよ、間違いなく。
              人間のずぼらさをなめてはいけない。

              • by Anonymous Coward

                そういう事じゃなくてね。
                10年使う事を想定しているサービスは、相応分持つ環境で作らなきゃダメってことなんだよ。
                PHPはバージョン毎のサポートが長くて5年、破壊的な文法変更の実績もある。
                長期で使うならコードの更新を含むメンテナンスが大前提。
                メンテナンスをしないなら、寿命がもって5年ってのは事は最初から決まってるわけ。PHPで作るってことはそういう事。
                古いバージョンのまま延命させてるのは無理を通してるだけで、問題の先送りにしかならないよ。

              • by Anonymous Coward

                そういう事じゃなくてね。
                そんな何年も使うつもりもないし持たせる気もないわけよ。
                だからわざわざ新しくなんかしないし、問題も解決なんてする必要ない。
                2000年問題もそう思われていたんだよ。
                「メンテナンスをしないなら、寿命がもって5年ってのは事は最初から決まってるわけ」
                「PHPで作るってことはそういう事」
                5年後10年後には2000年問題をもってるサービスなんてとうに寿命迎えてなくなってるはずだったんだよ。
                問題は先送りしておけば寿命を迎えて解決するはずだったんだよ。
                しかし、そうはならなかった。長くても5年の寿命と言われたものでも10年20年残りえる。
                それが2000年問題の教訓だよ。

              • by Anonymous Coward

                作るときは想定はしないけど、実際使ってる、てのが一番よくある現実。
                本当にそそういう主張をしたいなら、5年過ぎたら自壊するようにプログラムすべき。

            • by Anonymous Coward

              内容がうすっペラい。

      • by Anonymous Coward

        どういう点で「糞」なのかを書かないと「コードを変更するのが大変だから仕様変更は全てダメ」という老害と同じですよ。

        • by Anonymous Coward

          「既存のコードで(低頻度でも)それなりに使われているだろうコードの挙動を変更しているから」
          以外になんかある?
          C++のautoキーワードの仕様(用途)変更とかは、autoなんぞ誰も使ってないから出来たような物。

          開発が停止して保守しか行われていないコードでこの手の対応を行うのは結構なコストになるが、
          古いPHPにとどまろうにもPHP自体のメンテが行われないから脆弱性が放置される事になるし……
          PHPなんてネットで使うのがデフォなのに、将来的に脆弱性を放置する羽目になるだろう変更とかクソ以外の何でもないだろ。

    • by Anonymous Coward

      変数内容をメソッド名に使っての呼び出しでしょ
      そこまで頻繁にはやらない印象があるが…まぁ嫌だけど

    • by Anonymous Coward

      そもそも、レガシーコードは、5.3や5.5の壁を超えられてないだろ。
      Python3や予定されているRuby3に比べれば、非互換はかなり少ない。

      • by Anonymous Coward

        PHPが今までにやってきた、それはないだろうな仕様変更をしれっとマイナーバージョンアップでやってくれた歴史を知っていないんですね、わかります。

        • by Anonymous Coward

          元コメを擁護するつもりはないですが、マイナーバージョンアップを毎回実施してる人(現場?)ってそれほど多くないのではないかと思います。
          指摘内容は事実だと思うけど、それを知らない人がいても批難する部分じゃないと思います、
          PHPでの開発に携わっていたら、そういった問題を全て把握していなければいけないというのは、一部の人のエゴです。
          実際、コード書くだけの人は、自分が使っている環境のPHPのバージョンすら解ってない人もいますから。

          ※まぁ、マイナーバージョンアップ時、実装ミスで動作が変わったのを「次のバージョンで戻す」とかやられたこともあるけど、環境を常に最新バージョンに維持しなきゃいけないという縛りがなければ、困らない人の方が多いのかもしれない。

        • by Anonymous Coward

          PHP5.3.7とか誰もが度肝を抜かれただろうな。

      • by Anonymous Coward

        Ruby3ってまだ出てないぞ

    • by Anonymous Coward

      一番エグいのはPHP5用のextension全滅では?
      既存プロジェクトで確認せずにバージョン上げると爆発しそう…

      • by Anonymous Coward

        普通そういうことやらないので、その点については考慮の必要がありません。

      • by Anonymous Coward

        全滅するなら対応しやすい。extensionなら使っている場所も特定しやすいし。
        なので大変だけど怖くはないです。

  • by Anonymous Coward on 2015年12月07日 15時10分 (#2930121)

    こういうこと、Microsoftもやってたな…
    そう、DirectX 4.0だよ!

    # Windows 9はマーケティング上の理由が大きいからまた別か

    • 関連リンクにもありますが、もうスキップする話はしつくされたのではないかと思います。

      親コメント
    • 自分はWinamp 2.x、3.x、5.xを思い出した。

      親コメント
    • by Anonymous Coward

      Perl 6 の仲間と思われたくなかったからなんでないの?

      • by Anonymous Coward

        PHPとPerlのバージョンナンバーをごっちゃにする奴って何人くらいいるのかなあ。(#2930147以外で)

        • by Anonymous Coward
          いまさら、Perlを新規採用する会社なんかないだろうし
          終わった言語なんでPerlのバージョンナンバーどころか
          今いくつなのかすらわからないに1000点。
    • by Anonymous Coward

      4は死に通じて縁起が悪いからだっけ?
      同様に、Windows9は苦に通じて縁起が悪いからスキップ

      • Windows 95とかがあるので、あまり戦略的に良くないらしい。

        親コメント
      • by Anonymous Coward
        公式な発表では、StartWith("Windows 9") でOSの種類を比較してるクソコードがまだ世の中に相当数あるので避けたということですが。
        • by Anonymous Coward

          それは確か外野の憶測です。非常に説得力が強いことは事実ですがね。
          公式には7,8,9のダジャレを言っているだけだったはず。つまり本当の理由は秘密ってこと。

        • by Anonymous Coward

          それは周りの推測でマイクロソフトの公式な発表は"7,8,9"とかいう駄洒落だけでしょ。
          「つまり聞かないでくれよ」とか「聞かれても答える気はないよ」ってことなんだろうが。

      • by Anonymous Coward

        PHP4も、NT4も存在してただろ。

    • by Anonymous Coward
      PHP6は誰も幸せになるひとがいない、クソ仕様変更しようとして破綻したから廃棄されただけ。
      政治的な理由は無い
    • by Anonymous Coward
      Officeの内部バージョンも13をスキップしてたしけっこう気にするようですね
  • by Anonymous Coward on 2015年12月07日 17時27分 (#2930238)

    多くのウェブサイトはPHP、特にwordpressで公開されてたりするけど、
    すべてのサーバーがPHP7に移行した場合、どれくらいのサーバーが節約できるんだろう。
    アクセス多くてスケールしないとやっていけないような人気のサイトは少数だろうし、そこまでインパクトはないか。
    いや、それより共有レンタルサーバーがより多くのユーザーを1台に詰め込めるようになるのかな。
    それは結構大きいかも。

    • by Anonymous Coward

      共有レンタルサーバーで動くPHPなんてCGI版なんで、たいして恩恵は受けないでしょ。

  • by Anonymous Coward on 2015年12月07日 17時54分 (#2930262)

    オフトピだけど、そういえば、わざわざ言わない場合は、言語のバージョン=実装のバージョン、という暗黙の了解でいいのか。

    極端な所では「PHP言語7.0.0」の言語仕様が確定しましたが、それを余すところなく実装したPHPランタイムは未だ無いです、とか、
    PHPランタイム7.0.0はPHP言語7.0.0仕様を満たしていないバグがあって修正され、ランタイム7.8.3でようやく言語7.0.0相当になりました、とか、
    そういうバージョン間の齟齬はどうやって処理しているんだろう、とか、とりとめのないことを思ってしまった。
    サードパーティーのPHPランタイムを作る場合は、PHP言語7.0.0相当を名乗るべきなのか、PHP7.0.0互換を名乗るのべきなのか、とか。
    ライブラリを公開する場合に、何対応と言えば良いのかとか。

    言語と実装の分離がされてるC++とかCとかと比べてどうなんだろう。
    逆に、Rubyの、実装が仕様だ、はまだ生きてるのかな。

  • by Anonymous Coward on 2015年12月08日 0時07分 (#2930468)

    未定義をやんわりとnoticeしてはまらずに済むんですね!

  • by Anonymous Coward on 2015年12月08日 2時33分 (#2930506)

    いまだにPHP4の印象で語っていると老害と笑われるそうですよ。

    関係ないけど、Perl5とPerl6は別言語なんだよ、おじいちゃん。

    • by Anonymous Coward

      誰と闘ってんの?

      • by Anonymous Coward

        どこかでそういうふうに書かれていたのを書いただけですよねえ。
        プログラマならまず知ってる常識でドヤ顔で書くことじゃないですもん。

typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...