タグ

ブックマーク / hnw.hatenablog.com (6)

  • PHP7で変わること - hnwの日記

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

    PHP7で変わること - hnwの日記
    nekoruri
    nekoruri 2015/05/25
  • PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記

    PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい

    PHP 5.4.4から==の挙動が一段と難しくなりました - hnwの日記
    nekoruri
    nekoruri 2014/08/11
    「==」を仕様から落として例外で落とそうって書こうとしたら同案多数だった
  • PSR-0 を和訳してみた - hnwの日記

    先週の土日にPHPMatsuriに行ってきました。ナイスなイベントでしたね。その感想はまた改めて書きますが、Nate Abeleによるセッション「Practical PHP 5.3」で触れられていたPSR-0を適当に訳してみました。これはPHP5.3の名前空間とクラス名に関する標準化の試みで、少なくともZendFrameworkとsymfonyの中の人が関わっているようです。 うまく訳出できなくて苦し紛れのところもあるので、修正すべき箇所があれば教えてください。 元の文章は http://groups.google.com/group/php-standards/web/psr-0-final-proposal にあります。以下はその和訳です。 PSR-0 最終提案 以下で、オートローダーの相互利用性を確保するための必須要件について記述します。 必須要件: 名前空間とクラスの完全な名前とし

    PSR-0 を和訳してみた - hnwの日記
    nekoruri
    nekoruri 2011/09/12
  • PHP 5.3の無名関数を試してみた - hnwの日記

    何番煎じかわからないですが、PHP 5.3からは無名関数が実装されたということで、試しに使ってみました。 見なくても何となく使えるようなものだと思いますが、ドキュメントが「PHP: 無名関数 - Manual」にありますので、ざっと目を通した方がいいと思います。 僕は「どうせ無名関数って中身はcreate_functionなんでしょ?」と思っていたんですが、Closureクラスを使って実装されているなんてことも書いてあります。PHPにしてはマトモっぽくて意外に感じました。 コールバック関数としての無名関数 PHPには引数としてコールバック関数を要求する関数がありますが、PHP5.3.0からは無名関数を引数にしても動くようになりました。 無名関数は、普段の関数と同じノリで「function」から書き始めればOKです。関数宣言との違いは関数名を書かない点だけで、引数やタイプヒンティングについて

    PHP 5.3の無名関数を試してみた - hnwの日記
    nekoruri
    nekoruri 2010/09/07
    クロージャ外のレキシカル変数を持ち込むためにはuse宣言が必要 PHP 5.3の無名関数を試してみた - hnwの日記
  • array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記

    追記(2009/06/26):PHP 5.2.10以降、この問題は修正されています。「array_unique関数がPHP5.2.10から後方互換性を取り戻します」も併せてご覧ください。 2/26にPHP5.2.9がリリースされましたが、このバージョンからarray_unique関数が後方互換性を失いました。この関数を利用しているアプリケーションは、PHP5.2.9以降のバージョンでは新たなバグに悩まされるかもしれません。 5.2.9RC1の頃にこの仕様変更に気づいて「PHP Bugs: #47370: array_unique has backward compatibility problem, and SORT_REGULAR is confusing」で指摘してみたんですが、相手にされませんでした。 その後もid:moriyoshiさんが元の動作をデフォルト動作にするよう、中の人と

    array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記
    nekoruri
    nekoruri 2009/03/01
    SORT_REGULAR
  • PHPの浮動小数点数の表示 - hnwの日記

    PHPのround関数のリファレンスマニュアルのページに面白いコメントを見つけたので紹介します。 <?php echo 1100000.0, "\n"; echo 1200000.0, "\n"; echo 1300000.0, "\n"; echo 1400000.0, "\n"; 上記のプログラムをPHPのバージョン5.2.2〜5.2.6のいずれかで実行すると、下記の結果が得られます。 1100000 1.2E+6 1300000 1.4E+6 これはキモいですね。print_rやvar_dumpでも同様の挙動です。 興味がわかなかったので原因は追いかけていません。この挙動が影響するようなコードを書いている人は、printfを使う習慣を身につけるべきだと思います。

    PHPの浮動小数点数の表示 - hnwの日記
  • 1