Php5.3ってなんなんだー

  • 6,277 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,277
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. PHP 5.3 ってなんなんだー KousukeEbihara <ebihara@tejimaya.com>
  • 2. アジェンダ  現在のステータスとリリーススケジュー ル  PHP 5.3 いつ出る?  後方互換性のない変更  今回の BC クラッシャーっぷりはいかに  新機能ツアー
  • 3. PHP5.3ってなんなんだー 現在のステータスと リリーススケジュール
  • 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四半期あたりで
  • 10. ということで、 今年の夏は PHP 5.3 が アツイ!!
  • 11. PHP5.3ってなんなんだー 後方互換性のない変更
  • 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の実行時設定が可能に なったらしいよ
  • 19. PHP5.3ってなんなんだー 新機能ツアー
  • 20. PHP5.3 を導入  適当にphp.netから php5.3-dev を入手  ディレクトリを展開して、普通に  ./configure  make  make install
  • 21. 名前空間
  • 22. goto文
  • 23. ラムダ関数
  • 24. 無効化できなくなった拡張  PCRE  Perl 互換正規表現  Reflection  クラスや関数やエクステンションへのリバースエン ジニアリング用API  SPL  Standard PHP Library  イテレータとか特殊なデータアクセスの方法を実現 するためのインターフェースとかクラスの集まり 気軽に使えるように!
  • 25. ファイルシステム系関数の一部が Windows 対応  fnmatch()  link()  lstat()  linkinfo()  readlink()  symlink()
  • 26. DateInterval  日付の間隔を表すクラス  DateTimeのインスタンス(日付)に特定 期間を足したり引いたり、2 つの DateTimeの差分を表したりできるように なった
  • 27. DateInterval
  • 28. DatePeriod  日付の期間を表すクラス  コンストラクタに以下の情報を渡す  開始日(DateTime)  間隔(DateInterval)  終了日(DateTime)  ループとかにぶち込む
  • 29. DatePeriod
  • 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体感タイム 気軽に どうぞ!