SlideShare una empresa de Scribd logo
1 de 36
PHP 5.3 ってなんなんだー
      KousukeEbihara
  <ebihara@tejimaya.com>
アジェンダ
   現在のステータスとリリーススケジュー
    ル
       PHP 5.3 いつ出る?
   後方互換性のない変更
       今回の BC クラッシャーっぷりはいかに
   新機能ツアー
PHP5.3ってなんなんだー

 現在のステータスと
リリーススケジュール
PHP 5.3 リリース予定日の変遷
   2007 年 9 月
       海老原昂輔、日本大学芸術学部演劇学科1年
        として、OpenPNEづくしの夏休みを送る
       OpenPNE 2.10 alpha1 リリース
       au one サービス開始
       郵政民営化間近

       秋の早いうちにベータ出そうぜ
       2008年の第1四半期に正式版出そう!
PHP 5.3 リリース予定日の変遷
   2008 年 3 月
       海老原昂輔、大学生活で最初で最後の春休み、
        OpenPNEづくしの毎日を送る
       OpenPNE 2.11.5 リリース
       Netscape Navigator 終了のお知らせ

       「なんかベータ出せてなくね?」という議論
       2008年の第2四半期にベータ出そう!
       2008年の第2か第3四半期に正式版出そう!
PHP 5.3 リリース予定日の変遷
   2008 年 6 月
       海老原昂輔、一度も大学行かず、履修登録も
        せず
       OpenPNE 2.12.1 リリース
       秋葉原通り魔事件

       ちょっと To-do こなせてないし、議論もし
        なくちゃいけないので未定で!!
PHP 5.3 リリース予定日の変遷
   2008 年 7 月
       海老原昂輔、退学届けをもらう
       OpenPNE3alpha1 ちびちびと開発開始

       7/24 に機能追加フィックスして 7/31 にア
        ルファ(達成)
       2・3週間周期でアルファ・ベータ・RC出
        してこうぜ
       9月中旬〜10月中旬には安定版出せるよ
PHP 5.3 リリース予定日の変遷
   2008 年 10 月
       海老原昂輔、手嶋屋入社
       OpenPNE3alpha3 開発しまくり
       2008年内に正式版出そう
   2008 年 11 月
       OpenPNE3alpha3 リリース
       2009年第1四半期に正式版出そう
   2009 年 3 月
       OpenPNE 3.0.3 リリース
       2009年第2四半期に正式版出そう
PHP 5.3 現在の開発ステータス
   現在は RC 2
       2009/05/07 にリリース
       3週間くらいで RC3 出すよ(=05/28 までには
        RC3 が)
       ドキュメント整えつつ、バグ直しつつという
        段階
   正式版リリース予定
       2009年第2四半期あたりで
ということで、


今年の夏は
PHP 5.3 が
アツイ!!
PHP5.3ってなんなんだー

後方互換性のない変更
後方互換性のない変更(・3・)
   予約語が増えます
       namespace
       goto
   予約済みクラスも増えます
       Closure
後方互換性のない変更(・3・)
   よく使う関数に仕様変更がある
       usort(), array_flip(), array_unique() とかがオ
        ブジェクトを引数に取れなくなったので、使
        う前にかならず配列にキャストしてね!
       session_start()がなんらかの事情でセッショ
        ン開始に失敗した場合にfalse を返すように
        なった(いままで常に true を返していたらし
        いよ!)
       パスワードを利用しているMySQL 4.1 未満の
        DB に対して、mysql_connect() で接続しよう
        とすると Fatal error で落ちる
後方互換性のない変更(・3・)
   PECL 行きの拡張(ドナドナ拡張)
       ncurses
       fpdf
       dbase
       fbsql
       ming
       msql
後方互換性のない変更(・3・)
   非推奨化(利用すると E_DEPRECATED レ
    ベルのエラーを出力する)
       declare(ticks=N) とかregister_tick_function()
            tick というのはパーサが N 個処理を実行するたびに、
             任意の処理を実行させることできる超マイナーな機能
             のうちのひとつ(でも OpenPNE2 内で見かけたことが
             あったような……?)
       すべてのereg系関数
            php_usersの ML とかで大混乱が起きるのが今から楽し
             みで仕方がありません!
            手嶋屋ではereg系関数なんて使わせませんが、手嶋屋
             以外のエンジニアが書いたコードなどは見ておくとい
             いかもしれないですね
後方互換性のない変更(・3・)
   非非推奨化(非推奨じゃなくなった)
       is_a()
            使っても E_STRICT が発生しなくなった(!)
            5.0.0 〜 5.2.x ではinstanceof演算子を利用する必
             要がある
            とりあえず意味が全くわからない。いいよ別に
             instanceofで
後方互換性のない変更(・3・)
   ZendEngine 1 互換モードの削除
       zend.ze1_compatibility_mode
           PHP5 で非推奨な PHP4 のコードをだましだまし
            動かすためのphp.iniへの設定項目
               ただし、まったくだませてない
               比較演算子の細かい挙動と、オブジェクトのコピーや
                キャスト時の挙動が PHP4 準拠になるだけ
               これが原因で E_STRICT エラーが大量に出ることもあ
                る
           (まさか)使ってる人いないですよね?
後方互換性のない変更(・3・)
   /tmpディレクトリへのセッションファイル
    保存時の特殊な扱いがなくなる
       PHP 5.2.2 からはopen_basedir設定が有効に
        なっている場合でも /tmpディレクトリへの
        セッションファイル保存はおこなえたが、
        やっぱり 5.3.0 からはできなくなる
       ちなみにopen_basedirの実行時設定が可能に
        なったらしいよ
PHP5.3ってなんなんだー

新機能ツアー
PHP5.3 を導入
   適当にphp.netから php5.3-dev を入手
   ディレクトリを展開して、普通に
       ./configure
       make
       make install
名前空間
goto文
ラムダ関数
無効化できなくなった拡張
   PCRE
       Perl 互換正規表現
   Reflection
       クラスや関数やエクステンションへのリバースエン
        ジニアリング用API
   SPL
       Standard PHP Library
       イテレータとか特殊なデータアクセスの方法を実現
        するためのインターフェースとかクラスの集まり

気軽に使えるように!
ファイルシステム系関数の一部が
        Windows 対応
   fnmatch()
   link()
   lstat()
   linkinfo()
   readlink()
   symlink()
DateInterval
   日付の間隔を表すクラス
   DateTimeのインスタンス(日付)に特定
    期間を足したり引いたり、2 つの
    DateTimeの差分を表したりできるように
    なった
DateInterval
DatePeriod
   日付の期間を表すクラス
   コンストラクタに以下の情報を渡す
       開始日(DateTime)
       間隔(DateInterval)
       終了日(DateTime)
   ループとかにぶち込む
DatePeriod
増えまくった SPL
   SplStackとかSplQueueとか

   SplFixedArray
       サイズが可変じゃない配列だよ
            $array = new SplFixedArray(100);
       インデックスは添字だけだけど速いよ

   もちろんIteratorも大量増加
       FilesystemIterator
       GlobIterator
       RecursiveTreeIterator
FileInfo
   PECLからデフォルトの拡張行きに
   ファイルの中身を見て、 MIME type とエ
    ンコーディングを推測してくれる
       精度はそこそこいいらしいよ
       シンボリックリンクを辿ったりとか圧縮され
        たファイルを伸張したりとかできるとかなん
        とか
国際化関数
   ICU ライブラリのラッパー
       つーことで、使うならビルドに ICU ライブラリが必
        要な気がする
   地域にあわせたフォーマットを扱えるようになる
       数値←→通貨文字列
       日付・時刻
   言語にあわせたメッセージ出力機構
       gettextとかxliffみたいな
       MessageFormatter::formatMessage(”ja_JP“, ”{0}は
        {1,number,integer} 歳だよ!“, array(„海老原昂
        輔‟, 21));
Phar
   Pharってなんなんだー
Phar
   Pharとは、 PHP のスクリプトファイルを 1
    つの実行可能なアーカイブとしてまとめるた
    めのもの
       Java の Jar のパクリ
   ファイルやディレクトリに関する操作を乗っ
    取って、Pharアーカイブ内で完結させてくれ
    る
   アーカイブの作成はPhar拡張モジュールが必
    須だが、実行は拡張モジュール不要
       PHP 5.2 以前の環境でも動作する可能性
Phar
1.    Pharファイル作成用スクリプトを書く
     1.   ファイルフォーマットとかいろいろ決める
             Phar形式の他に ZIP 形式とかにもできる
     2.   スタブ(Pharファイルがロードされたとき
          に最初に実行されるスクリプト)を書く
             最初にどのファイルを実行するかとかそういうこ
              とを決める
2.    Pharファイルを PHP スクリプトとして
      実行する
質疑応答タイム
       &
PHP5.3体感タイム




        気軽に
       どうぞ!

Más contenido relacionado

La actualidad más candente

PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収
PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収
PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収Hiroshi Tokumaru
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築Kosuke Shinoda
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb ApiKenji Wada
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューションnishimizu
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2nishimizu
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!Shin Ise
 
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツールはなずきん Hana
 
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるにはdevsumi2009
 
Force.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPForce.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPHiroshi Ono
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装moai kids
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
MylynとおともだちHiroki Kondo
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in DetailTim Lu
 

La actualidad más candente (20)

PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収
PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収
PHPカンファレンス2009 - 45分で分かる安全なWebアプリケーション開発のための発注・要件・検収
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb Api
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューション
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2
 
Bluetoothでつなごう!
Bluetoothでつなごう!Bluetoothでつなごう!
Bluetoothでつなごう!
 
XS Japan 2008 App Data Japanese
XS Japan 2008 App Data JapaneseXS Japan 2008 App Data Japanese
XS Japan 2008 App Data Japanese
 
6 3google
6 3google6 3google
6 3google
 
XS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti JapaneseXS Japan 2008 Ganeti Japanese
XS Japan 2008 Ganeti Japanese
 
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール
勉強会カンファレンス2009 IT勉強会カレンダーと募集ツール
 
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
 
Force.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JPForce.com_Multitenancy_WP_101508_JP
Force.com_Multitenancy_WP_101508_JP
 
About OSGeo.JP
About OSGeo.JPAbout OSGeo.JP
About OSGeo.JP
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装
 
Mylynとおともだち
MylynとおともだちMylynとおともだち
Mylynとおともだち
 
Authoring Tools Comparision in Detail
Authoring Tools Comparision in DetailAuthoring Tools Comparision in Detail
Authoring Tools Comparision in Detail
 
090601-dotplot
090601-dotplot090601-dotplot
090601-dotplot
 
T2@java-ja#toyama
T2@java-ja#toyamaT2@java-ja#toyama
T2@java-ja#toyama
 
Keni20 Sample
Keni20 SampleKeni20 Sample
Keni20 Sample
 
5 13 Internet
5 13 Internet5 13 Internet
5 13 Internet
 

Más de Kousuke Ebihara

お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかKousuke Ebihara
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...Kousuke Ebihara
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Kousuke Ebihara
 
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Kousuke Ebihara
 
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Kousuke Ebihara
 
OAuthで気持ちのいい アクセス制御を
OAuthで気持ちのいいアクセス制御をOAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいい アクセス制御をKousuke Ebihara
 
ルーティングを使って シンプルなアプリケーション開発を
ルーティングを使ってシンプルなアプリケーション開発をルーティングを使ってシンプルなアプリケーション開発を
ルーティングを使って シンプルなアプリケーション開発をKousuke Ebihara
 

Más de Kousuke Ebihara (9)

お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのかお前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
 
Open pne3 with_symfony
Open pne3 with_symfonyOpen pne3 with_symfony
Open pne3 with_symfony
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
 
Hybrid Onboarding
Hybrid OnboardingHybrid Onboarding
Hybrid Onboarding
 
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
 
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
 
OAuthで気持ちのいい アクセス制御を
OAuthで気持ちのいいアクセス制御をOAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいい アクセス制御を
 
ルーティングを使って シンプルなアプリケーション開発を
ルーティングを使ってシンプルなアプリケーション開発をルーティングを使ってシンプルなアプリケーション開発を
ルーティングを使って シンプルなアプリケーション開発を
 

Php5.3ってなんなんだー

  • 1. PHP 5.3 ってなんなんだー KousukeEbihara <ebihara@tejimaya.com>
  • 2. アジェンダ  現在のステータスとリリーススケジュー ル  PHP 5.3 いつ出る?  後方互換性のない変更  今回の BC クラッシャーっぷりはいかに  新機能ツアー
  • 4. PHP 5.3 リリース予定日の変遷  2007 年 9 月  海老原昂輔、日本大学芸術学部演劇学科1年 として、OpenPNEづくしの夏休みを送る  OpenPNE 2.10 alpha1 リリース  au one サービス開始  郵政民営化間近  秋の早いうちにベータ出そうぜ  2008年の第1四半期に正式版出そう!
  • 5. PHP 5.3 リリース予定日の変遷  2008 年 3 月  海老原昂輔、大学生活で最初で最後の春休み、 OpenPNEづくしの毎日を送る  OpenPNE 2.11.5 リリース  Netscape Navigator 終了のお知らせ  「なんかベータ出せてなくね?」という議論  2008年の第2四半期にベータ出そう!  2008年の第2か第3四半期に正式版出そう!
  • 6. PHP 5.3 リリース予定日の変遷  2008 年 6 月  海老原昂輔、一度も大学行かず、履修登録も せず  OpenPNE 2.12.1 リリース  秋葉原通り魔事件  ちょっと To-do こなせてないし、議論もし なくちゃいけないので未定で!!
  • 7. PHP 5.3 リリース予定日の変遷  2008 年 7 月  海老原昂輔、退学届けをもらう  OpenPNE3alpha1 ちびちびと開発開始  7/24 に機能追加フィックスして 7/31 にア ルファ(達成)  2・3週間周期でアルファ・ベータ・RC出 してこうぜ  9月中旬〜10月中旬には安定版出せるよ
  • 8. PHP 5.3 リリース予定日の変遷  2008 年 10 月  海老原昂輔、手嶋屋入社  OpenPNE3alpha3 開発しまくり  2008年内に正式版出そう  2008 年 11 月  OpenPNE3alpha3 リリース  2009年第1四半期に正式版出そう  2009 年 3 月  OpenPNE 3.0.3 リリース  2009年第2四半期に正式版出そう
  • 9. PHP 5.3 現在の開発ステータス  現在は RC 2  2009/05/07 にリリース  3週間くらいで RC3 出すよ(=05/28 までには RC3 が)  ドキュメント整えつつ、バグ直しつつという 段階  正式版リリース予定  2009年第2四半期あたりで
  • 12. 後方互換性のない変更(・3・)  予約語が増えます  namespace  goto  予約済みクラスも増えます  Closure
  • 13. 後方互換性のない変更(・3・)  よく使う関数に仕様変更がある  usort(), array_flip(), array_unique() とかがオ ブジェクトを引数に取れなくなったので、使 う前にかならず配列にキャストしてね!  session_start()がなんらかの事情でセッショ ン開始に失敗した場合にfalse を返すように なった(いままで常に true を返していたらし いよ!)  パスワードを利用しているMySQL 4.1 未満の DB に対して、mysql_connect() で接続しよう とすると Fatal error で落ちる
  • 14. 後方互換性のない変更(・3・)  PECL 行きの拡張(ドナドナ拡張)  ncurses  fpdf  dbase  fbsql  ming  msql
  • 15. 後方互換性のない変更(・3・)  非推奨化(利用すると E_DEPRECATED レ ベルのエラーを出力する)  declare(ticks=N) とかregister_tick_function()  tick というのはパーサが N 個処理を実行するたびに、 任意の処理を実行させることできる超マイナーな機能 のうちのひとつ(でも OpenPNE2 内で見かけたことが あったような……?)  すべてのereg系関数  php_usersの ML とかで大混乱が起きるのが今から楽し みで仕方がありません!  手嶋屋ではereg系関数なんて使わせませんが、手嶋屋 以外のエンジニアが書いたコードなどは見ておくとい いかもしれないですね
  • 16. 後方互換性のない変更(・3・)  非非推奨化(非推奨じゃなくなった)  is_a()  使っても E_STRICT が発生しなくなった(!)  5.0.0 〜 5.2.x ではinstanceof演算子を利用する必 要がある  とりあえず意味が全くわからない。いいよ別に instanceofで
  • 17. 後方互換性のない変更(・3・)  ZendEngine 1 互換モードの削除  zend.ze1_compatibility_mode  PHP5 で非推奨な PHP4 のコードをだましだまし 動かすためのphp.iniへの設定項目  ただし、まったくだませてない  比較演算子の細かい挙動と、オブジェクトのコピーや キャスト時の挙動が PHP4 準拠になるだけ  これが原因で E_STRICT エラーが大量に出ることもあ る  (まさか)使ってる人いないですよね?
  • 18. 後方互換性のない変更(・3・)  /tmpディレクトリへのセッションファイル 保存時の特殊な扱いがなくなる  PHP 5.2.2 からはopen_basedir設定が有効に なっている場合でも /tmpディレクトリへの セッションファイル保存はおこなえたが、 やっぱり 5.3.0 からはできなくなる  ちなみにopen_basedirの実行時設定が可能に なったらしいよ
  • 20. PHP5.3 を導入  適当にphp.netから php5.3-dev を入手  ディレクトリを展開して、普通に  ./configure  make  make install
  • 24. 無効化できなくなった拡張  PCRE  Perl 互換正規表現  Reflection  クラスや関数やエクステンションへのリバースエン ジニアリング用API  SPL  Standard PHP Library  イテレータとか特殊なデータアクセスの方法を実現 するためのインターフェースとかクラスの集まり 気軽に使えるように!
  • 25. ファイルシステム系関数の一部が Windows 対応  fnmatch()  link()  lstat()  linkinfo()  readlink()  symlink()
  • 26. DateInterval  日付の間隔を表すクラス  DateTimeのインスタンス(日付)に特定 期間を足したり引いたり、2 つの DateTimeの差分を表したりできるように なった
  • 28. DatePeriod  日付の期間を表すクラス  コンストラクタに以下の情報を渡す  開始日(DateTime)  間隔(DateInterval)  終了日(DateTime)  ループとかにぶち込む
  • 30. 増えまくった SPL  SplStackとかSplQueueとか  SplFixedArray  サイズが可変じゃない配列だよ  $array = new SplFixedArray(100);  インデックスは添字だけだけど速いよ  もちろんIteratorも大量増加  FilesystemIterator  GlobIterator  RecursiveTreeIterator
  • 31. FileInfo  PECLからデフォルトの拡張行きに  ファイルの中身を見て、 MIME type とエ ンコーディングを推測してくれる  精度はそこそこいいらしいよ  シンボリックリンクを辿ったりとか圧縮され たファイルを伸張したりとかできるとかなん とか
  • 32. 国際化関数  ICU ライブラリのラッパー  つーことで、使うならビルドに ICU ライブラリが必 要な気がする  地域にあわせたフォーマットを扱えるようになる  数値←→通貨文字列  日付・時刻  言語にあわせたメッセージ出力機構  gettextとかxliffみたいな  MessageFormatter::formatMessage(”ja_JP“, ”{0}は {1,number,integer} 歳だよ!“, array(„海老原昂 輔‟, 21));
  • 33. Phar  Pharってなんなんだー
  • 34. Phar  Pharとは、 PHP のスクリプトファイルを 1 つの実行可能なアーカイブとしてまとめるた めのもの  Java の Jar のパクリ  ファイルやディレクトリに関する操作を乗っ 取って、Pharアーカイブ内で完結させてくれ る  アーカイブの作成はPhar拡張モジュールが必 須だが、実行は拡張モジュール不要  PHP 5.2 以前の環境でも動作する可能性
  • 35. Phar 1. Pharファイル作成用スクリプトを書く 1. ファイルフォーマットとかいろいろ決める  Phar形式の他に ZIP 形式とかにもできる 2. スタブ(Pharファイルがロードされたとき に最初に実行されるスクリプト)を書く  最初にどのファイルを実行するかとかそういうこ とを決める 2. Pharファイルを PHP スクリプトとして 実行する
  • 36. 質疑応答タイム & PHP5.3体感タイム 気軽に どうぞ!