IO_SWF 2.2.3 をリリースしました

  • 今回のリリースは PHP5.4/5.3 対応がメインです。
  • 後は dump 表示の細かい修正があります。

※ 前のバージョン(IO_SWF 2.2.2 以前) で少なくとも PHP5.3.15 までは動作していましたが、PHP5.3.21 では動きませんstrict の警告がでます。PHP5.3 環境でお使いの方は本バージョン(IO_SWF 2.2.3)への更新を強く勧めます。 PHP5.3 でも E_STRICT が有効だと警告が出ます。PHP5.4 では E_ALL に E_STRICT が含まれるので明示的に外さないと警告が出ますし、大抵出るでしょう。

ChangeLog

  • PHP5.4/5.3 に対応しました。
    • PHP5.3 の古いマイナーバージョンではでも E_STRICT を指定しなければ、以前の IO_SWF でも警告は出ません。
  • Shape のダンプ表示改善
    • Style にインデックス番号を付けました
    • NewFillStyles のインデントを揃えました
    • Styles の count が 0 の時は (none) を表示
  • Action のダンプの修正
    • Action が空の場合に Undefined i が出るのを修正
  • typo を幾つか修正: sceneBlasFlag, Bigmap

PHP5.4/5.3 対応

  • IO_SWF_Type のメソッドを揃えるのに abstract static を使っていましたが、PHP5.x では廃止されて IO_SWF が動かなくなりました。
  • http://atamoco.boy.jp/php5/class/abstract.static.php
  • interface を implements で引き継ぐ方式に変更して対応。

Thank you so much! > @AknEp

公式ドキュメントによると PHP5.2 で abstract static が取り除かれてるはずですが、PHP 5.3.15 は普通に動作しちゃってます。PHP 5.3.21 や PHP5.4 では動作はしますが strict 警告が出ます。 実際に警告が出るかは error_reporting の E_STRICT 次第です。PHP5.3 だと付かない事もありますが、PHP5.4 では基本警告が出ると考えた方が良いです。

PHP 可愛いよ PHP

abstract static function
  • テストコード (abstract_static.php)
<?php
abstract class A {
    abstract static function foo();
}
class B extends A {
    static function foo() { echo "B::foo()\n"; }
}

  • 結果1 (PHP5.3.15)
B::foo()

  • 結果2 (PHP5.3.21 or PHP5.4)
Strict Standards: Static function A::foo() should not be abstract in abstract_static.php on line 3
B::foo()
interface static function

こっちの方式を使うように修正しました。

<?php
interface A {
    static function foo();
}
class B implements A {
    static function foo() { ; }
}

ついで

解説ツールとして以下のブログで紹介されました。参考までに。

追記