PHP 5.4 がめでたくリリースされましたが, 5.2 なサービスやライブラリを保守している人もまだまだいることでしょう.

移行などを考えると, とりあえずは namespace も Closure も使わずクラス名は Foo_Bar_Baz とかアンダースコアで区切る PHP 5.2 なスタイルで書きつつ, PHP 5.3 や 5.4 でも動作するようにライブラリを書く, という選択肢を取ることになりますが, 全部の環境でテストするのは面倒くさい…
というあなたのための Travis CI というサービスについては以前書きました.

Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる

そんな Travis CI ですが, PHP 5.2 に mbstring が入っておらず, そのせいで PHP 5.2 だけテストが通らない, なんてことが起こっていました.

mb_strwidth が無くてテストがコケる

ですがそれも今は昔の話, いつの間にか mbstring 入りで PHP 5.2 環境が用意されるようになったようで, 問題無くテストが通るようになっていました.

テスト通った!

コミット識別子を見ると, どちらも同じコードに対してテストが実行されていることがわかります.

この修正は, Travis CI の PHP 対応に尽力なさっている Loïc Frering さんによるものです.
他にも PHP の新しいバージョンが出るたびに定義ファイルを用意してくれたり, 足を向けては寝られない思いです. (ちなみにフランスの方らしいです)

ところで通常 Travis CI によるビルドを実行するには GitHub に対して push する必要がありますが, 今回の場合のようにコードに変更は無いが再度実行したい, という場合は, 以下の方法でできます.

  1. GitHub のリポジトリの Admin から Service Hooks, Travis と辿る
  2. Test Hook ボタンを押す

GitHub 上の Travis CI の Service Hook 管理画面

これで push したときと同様の通知が行われ, Travis CI 上でのビルドを強制的に実行することができます.

そういうわけでまだまだ PHP 5.2 な方もどんどん Travis CI を作っていきましょう.

, ,

社内勉強会にて、PHP のセキュリティについてプレゼンすることになりました。その中で、addslashes() はマルチバイト文字のことを考慮していないから使用禁止 ! ということを話すのですが、代案を示さないのもよくないので、mb_addslashes() というものを作りました。

ただ、addslashes() がマルチバイトに対応したところで、SQL 文のエスケープとして適切か ? というと必ずしもそうではないので、今度は mb_mysql_real_escape_string() (長い) を作ろうと思います。

ともあれ、せっかく書いたので公開します。mbstring 必須です。

,