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

 現在のステータスと
リリーススケジュール
PHP 5.3 リリース予定日の変遷
   2007 年 9 月
       海老原昂輔、日本大学芸術学部演劇学科1年
        として、OpenPNEづくしの夏休みを送る
       OpenPNE 2.10 alpha1 リ...
PHP 5.3 リリース予定日の変遷
   2008 年 3 月
       海老原昂輔、大学生活で最初で最後の春休み、
        OpenPNEづくしの毎日を送る
       OpenPNE 2.11.5 リリース
    ...
PHP 5.3 リリース予定日の変遷
   2008 年 6 月
       海老原昂輔、一度も大学行かず、履修登録も
        せず
       OpenPNE 2.12.1 リリース
       秋葉原通り魔事件

  ...
PHP 5.3 リリース予定日の変遷
   2008 年 7 月
       海老原昂輔、退学届けをもらう
       OpenPNE3alpha1 ちびちびと開発開始

       7/24 に機能追加フィックスして 7/31 ...
PHP 5.3 リリース予定日の変遷
   2008 年 10 月
       海老原昂輔、手嶋屋入社
       OpenPNE3alpha3 開発しまくり
       2008年内に正式版出そう
   2008 年 11 月...
PHP 5.3 現在の開発ステータス
   現在は RC 2
       2009/05/07 にリリース
       3週間くらいで RC3 出すよ(=05/28 までには
        RC3 が)
       ドキュメント...
ということで、


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

後方互換性のない変更
後方互換性のない変更(・3・)
   予約語が増えます
       namespace
       goto
   予約済みクラスも増えます
       Closure
後方互換性のない変更(・3・)
   よく使う関数に仕様変更がある
       usort(), array_flip(), array_unique() とかがオ
        ブジェクトを引数に取れなくなったので、使
       ...
後方互換性のない変更(・3・)
   PECL 行きの拡張(ドナドナ拡張)
       ncurses
       fpdf
       dbase
       fbsql
       ming
       msql
後方互換性のない変更(・3・)
   非推奨化(利用すると E_DEPRECATED レ
    ベルのエラーを出力する)
       declare(ticks=N) とかregister_tick_function()
       ...
後方互換性のない変更(・3・)
   非非推奨化(非推奨じゃなくなった)
       is_a()
            使っても E_STRICT が発生しなくなった(!)
            5.0.0 〜 5.2.x では...
後方互換性のない変更(・3・)
   ZendEngine 1 互換モードの削除
       zend.ze1_compatibility_mode
           PHP5 で非推奨な PHP4 のコードをだましだまし
    ...
後方互換性のない変更(・3・)
   /tmpディレクトリへのセッションファイル
    保存時の特殊な扱いがなくなる
       PHP 5.2.2 からはopen_basedir設定が有効に
        なっている場合でも /tm...
PHP5.3ってなんなんだー

新機能ツアー
PHP5.3 を導入
   適当にphp.netから php5.3-dev を入手
   ディレクトリを展開して、普通に
       ./configure
       make
       make install
名前空間
goto文
ラムダ関数
無効化できなくなった拡張
   PCRE
       Perl 互換正規表現
   Reflection
       クラスや関数やエクステンションへのリバースエン
        ジニアリング用API
   SPL
     ...
ファイルシステム系関数の一部が
        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)...
FileInfo
   PECLからデフォルトの拡張行きに
   ファイルの中身を見て、 MIME type とエ
    ンコーディングを推測してくれる
       精度はそこそこいいらしいよ
       シンボリックリンクを辿っ...
国際化関数
   ICU ライブラリのラッパー
       つーことで、使うならビルドに ICU ライブラリが必
        要な気がする
   地域にあわせたフォーマットを扱えるようになる
       数値←→通貨文字列
  ...
Phar
   Pharってなんなんだー
Phar
   Pharとは、 PHP のスクリプトファイルを 1
    つの実行可能なアーカイブとしてまとめるた
    めのもの
       Java の Jar のパクリ
   ファイルやディレクトリに関する操作を乗っ
    ...
Phar
1.    Pharファイル作成用スクリプトを書く
     1.   ファイルフォーマットとかいろいろ決める
             Phar形式の他に ZIP 形式とかにもできる
     2.   スタブ(Pharファイルが...
質疑応答タイム
       &
PHP5.3体感タイム




        気軽に
       どうぞ!
Upcoming SlideShare
Loading in …5
×

Php5.3ってなんなんだー

6,800 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,800
On SlideShare
0
From Embeds
0
Number of Embeds
2,351
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Php5.3ってなんなんだー

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

×