• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
20081120 lt11th ace
 

20081120 lt11th ace

on

  • 572 views

 

Statistics

Views

Total Views
572
Views on SlideShare
553
Embed Views
19

Actions

Likes
2
Downloads
0
Comments
0

2 Embeds 19

http://d.hatena.ne.jp 18
http://norii.hatenablog.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20081120 lt11th ace 20081120 lt11th ace Presentation Transcript

    • ACあなたとは      E違うんです     エラー処理 2008年11月20日(木) 第11回Lightning Talk 林 正紀 id:m_norii
    • というわけで PHPのエラー処理のお話です
    • ところで エラー処理ちゃんとしてますか?
    • CASE1 : 放置$filename が存在しないとE_WARNINGが出る
    • CASE2 : 黙殺E_WARNINGうざいからとりあえず抑制した。。。
    • 論外
    • CASE3 : 比較的まともな例・ファイルの存在チェックをしてる・各関数でFALSEが返ってきた場合をケア
    • でも、いちいちif(($handle=fopen($file))===FALSE) とか or die(’Error!’) とか面倒。
    • なのでエラーハンドラを 使いましょう
    • 定義側:利用側:詳しい使い方はPHPマニュアル参照。
    • CASE4:PEARのエラー処理
    • てか、PEAR::isError() ばっかでうざいし。。。orz
    • でも大丈夫!
    • PEARにもエラーハンドリング機構が あるよ(^^)v
    • PEAR::setErrorHandling()
    • あとはさっきの要領で、ErrorHandlerクラスにエラー時に実行するhandlePEARError() メソッドを定義するだけ。→エラー処理が消えて、読みやすい  ソースコードになったよ!
    • ところで
    • PEARって「クラス」ライブラリ ですよね?
    • だったら エラーも 「例外」で処理しませんか? PHP5限定だけど・・・
    • PEAR_ErrorをPEAR_Exceptionに 詰め替えてthrowするラッパを作る※元ネタは [PHP-users 25583]のMLより。
    • さらにPHPのデフォルト例外ハンドラも 定義しておく
    • そして、利用する時はこんな感じ。
    • あとは、 冒頭のset_error_handler(); とかも、auto_prepend_file に指定して コードから追い出しちゃう ・・・って手もありますが。 ・・・そこは好き好きに。(^^;;;
    • まだまだエラー処理について 語るべきことは 多いのですが・・
    • たぶんタイムアップ寸前なので (^^;;; ・・・さわりだけ
    • 【大事なこと1】 Webページのエラー処理とコマンドラインのエラー処理は ちゃんとわける maillog に HTMLのエラーページが出力 されてるとか、ありえないし。。。orz
    • 【大事なこと2】エラー処理は、最初に設計・実装! いわゆる「横断的関心事」だから、 後で付け足そうと思うと結構めんどくさいので。
    • 【大事なこと3】php.iniの設定、要確認!! 本番環境で display_errors = On とか はずかしいぞ!
    • 【大事なこと4】ApacheのErrorDocumentも 準備しておこう デフォルトのエラーページはかっこわるい (もちろんセキュリティ・ユーザビリティ的にも 好ましくない)
    • ご静聴ありがとうございました