タグ

php7とhnwに関するshimookaのブックマーク (6)

  • PHP5とPHP7の違い(extension編) - Qiita

    PHP5用のextensionは変更なしではPHP7上で動きません。#ifで分岐して両対応にするのも厳しい印象で、多くのextensionは別ブランチで開発しているようです(調べた範囲ではAPCu、msgpack、memcachedなどが別ブランチで開発しているようです)。 今回PHP7用の実験的なextension「php7_explorer」を書いてみました。書いてみてPHP5用のextensionとの違いを改めて実感したので、ざっくりの違いをまとめてみます。 「おまじない」を書かなくてよくなった PHP5までは、Zend APIのプロトタイプ宣言最後にTSRMLS_DCを、呼び出し時の引数リストの最後にTSRMLS_CCをつけるという「おまじない」が必要でした。これはZTS (Zend Thread Safety)サポートのため、必要なときだけ余計な引数を引き回すようなマクロ定義です

    PHP5とPHP7の違い(extension編) - Qiita
    shimooka
    shimooka 2015/09/18
    拡張モジュールの対応具合によって、PHP7への移行が進むかどうかかなり違いそう。。。runkit対応マダー
  • PHP7で変わること - hnwの日記

    次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。 このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つずつ実際に試してみて、その結果を簡単にまとめていました。 今回は発表前の区切りとして、私の書いたPHP7関連の記事・プレゼン資料を一覧形式でまとめなおしてみます。PHPカンファレンス関西2015ではこれらの内容を踏まえつつ、気になる点を重点的にお伝えしたいと考えています。 内部実装のリファクタリング PHP7の目玉と言える、速度改善に関わる内容がほとんどです。 PHP7はなぜ速いのか - Slide

    PHP7で変わること - hnwの日記
  • PHP7調査(26)無名クラスの導入 - Qiita

    PHP7から無名クラスがサポートされました。次のような文法で、クラス定義なしでオブジェクトが生成できます。 通常のクラス定義と同様にextendsやimplementsなども書くことができます。 この構文はnewまで必須です。newなしで無名クラスが第1級オブジェクトになりそうに見えますが、現時点ではそのような記述はできません。無名クラスのインスタンスを作ることだけが可能です。 ユースケース RFCによれば次のような状況で便利なのでは?とのことでした。 テスト用のモックオブジェクトで、その場限りでインターフェースを実装する状況。 そのクラスを外部に公開したくないような場合 オブジェクトメソッドが呼ばれたりするのは構わないが、継承して使われるのがイヤな場合…? 自明な実装でオートローダーを叩きたくない 1クラス1ファイルというルールで運用している場合、1ファイル増えてしまうのが悲しいこともあ

    PHP7調査(26)無名クラスの導入 - Qiita
  • PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita

    (2015/07/02追記:PHP 7.0.0alpha2に合わせて修正しました) PHPのエラーは、エラー文言を表示するだけの警告・注意と、その場で処理を終了してしまう致命的エラー(fatal error)の2種類に大別できます。 ところで、PHP5の致命的エラーには不便な点があります。それは、set_error_handler()やその他の方法でエラーハンドリングできず、必ず終了してしまう点です。これでは致命的エラーをユニットテストするのも不便ですし、ReactPHPのようにサーバ動作させるようなプログラムも安心して使えません。 PHP7では致命的エラーが例外として実現されるようになり、エラーハンドリングの自由度が格段に上がりました。この変更の概要を紹介します。 例外のクラス階層の変更 まず、PHP7で例外クラスの階層がどう変わるかを説明します。PHP5までの例外のクラス階層は次のよう

    PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita
  • PHPのJSONライセンス問題が一応決着 - hnwの日記

    2012年頃に、PHPのJSONエクステンションのソースコード中に次のようなライセンス文言が含まれていると話題になりました。 The Software shall be used for Good, not Evil. これはJSONライセンスと呼ばれるライセンスの一文です。「このソフトウェアを良いことに使うのはいいけど、悪いことには使っちゃダメ」といったところでしょうか。 これはフリーソフトウェアの定義に反しており*1、各種LinuxディストリビューションでJSONエクステンションを配布できないことになるため、ちょっとした騒動になったというわけです。 稿ではこのJSONライセンスへの対応が現在どうなっているかを紹介します。 各種Linuxディストリビューションの対応 PHPのJSONエクステンションはjson_encode()やjson_decode()などの重要な関数を提供するエクス

    PHPのJSONライセンス問題が一応決着 - hnwの日記
  • PHP7調査(10)名前空間のuseをまとめて書けるようになった - Qiita

    PHP7から、名前空間を使うときに複数のuseを中カッコでまとめて書くことができます。 具体的には次のように書けるようになりました。 <?php use Symfony\Component\Console\{ Input\InputInterface, Input\InputArgument, Input\InputOption, Output\OutputInterface, Output\ConsoleOutputInterface };

    PHP7調査(10)名前空間のuseをまとめて書けるようになった - Qiita
    shimooka
    shimooka 2015/04/14
    ほー
  • 1