SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
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も
     準備しておこう
          デフォルトのエラーページはかっこわるい
          (もちろんセキュリティ・ユーザビリティ的にも
          好ましくない)
ご静聴
ありがとうございました

Weitere ähnliche Inhalte

Andere mochten auch

Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記kentaro watanabe
 
QCon Tokyo 2013
QCon Tokyo 2013QCon Tokyo 2013
QCon Tokyo 2013増田 亨
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)増田 亨
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方増田 亨
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発Mao Ohnishi
 

Andere mochten auch (6)

DDD入門以前
DDD入門以前DDD入門以前
DDD入門以前
 
Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記Beautiful Development ブレイクスルー体験記
Beautiful Development ブレイクスルー体験記
 
QCon Tokyo 2013
QCon Tokyo 2013QCon Tokyo 2013
QCon Tokyo 2013
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発
 

Ähnlich wie 20081120 lt11th ace

Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~CHY72
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかHisateru Tanaka
 
FuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるFuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるMakoto Shimoda
 
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室Yusuke Ando
 
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosSwift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosTomohiro Kumagai
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介sters
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造do_aki
 
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPADPuppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPADGosuke Miyashita
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - FuncGosuke Miyashita
 
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座  for WordPress (初級)デザイナーのためのPHP講座  for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)佑 小田垣佑
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerHideo Kashioka
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxHideo Kashioka
 

Ähnlich wie 20081120 lt11th ace (19)

Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~Unity2015_No10_~UGUI&Audio~
Unity2015_No10_~UGUI&Audio~
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
Word pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのかWord pressのテーマは firephpでハックすれば 良かったのか
Word pressのテーマは firephpでハックすれば 良かったのか
 
FuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみるFuelPHPにアプリと管理ツールを同居してみる
FuelPHPにアプリと管理ツールを同居してみる
 
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
 
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhiosSwift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
 
20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造20110910 闇鍋的php魔改造
20110910 闇鍋的php魔改造
 
Puppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPADPuppet Best Practices? at COOKPAD
Puppet Best Practices? at COOKPAD
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座  for WordPress (初級)デザイナーのためのPHP講座  for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
 
C言語よくある誤り
C言語よくある誤りC言語よくある誤り
C言語よくある誤り
 
Phpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginerPhpcon tokyo 20120_bigginer
Phpcon tokyo 20120_bigginer
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
 
C language Sem 01
C language Sem 01C language Sem 01
C language Sem 01
 

Mehr von Masanori Hayashi

「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018Masanori Hayashi
 
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな  - レガシー感謝の日人のレガシーを笑うな  - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日Masanori Hayashi
 
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれようMasanori Hayashi
 
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravelMasanori Hayashi
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習Masanori Hayashi
 
ボトルネックを解消せよ
ボトルネックを解消せよボトルネックを解消せよ
ボトルネックを解消せよMasanori Hayashi
 
俺的世界で一番暑い夏
俺的世界で一番暑い夏俺的世界で一番暑い夏
俺的世界で一番暑い夏Masanori Hayashi
 
Soft bank ssl仕様変更について
Soft bank ssl仕様変更についてSoft bank ssl仕様変更について
Soft bank ssl仕様変更についてMasanori Hayashi
 

Mehr von Masanori Hayashi (15)

「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
「クソコード」言い換えのご提案 - 2018-12-15 #phpcon2018
 
人のレガシーを笑うな - レガシー感謝の日
人のレガシーを笑うな  - レガシー感謝の日人のレガシーを笑うな  - レガシー感謝の日
人のレガシーを笑うな - レガシー感謝の日
 
20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう20180627 phpstudy 長いものに巻かれよう
20180627 phpstudy 長いものに巻かれよう
 
20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel20180425 phpstudy-my-first-laravel
20180425 phpstudy-my-first-laravel
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
 
Phpstudy98
Phpstudy98Phpstudy98
Phpstudy98
 
Php blt-vol2
Php blt-vol2Php blt-vol2
Php blt-vol2
 
Symfony meetup-7
Symfony meetup-7Symfony meetup-7
Symfony meetup-7
 
Glt vol49
Glt vol49Glt vol49
Glt vol49
 
Glt vol48
Glt vol48Glt vol48
Glt vol48
 
ボトルネックを解消せよ
ボトルネックを解消せよボトルネックを解消せよ
ボトルネックを解消せよ
 
Glt vol47
Glt vol47Glt vol47
Glt vol47
 
PHP framework Phalcon
PHP framework PhalconPHP framework Phalcon
PHP framework Phalcon
 
俺的世界で一番暑い夏
俺的世界で一番暑い夏俺的世界で一番暑い夏
俺的世界で一番暑い夏
 
Soft bank ssl仕様変更について
Soft bank ssl仕様変更についてSoft bank ssl仕様変更について
Soft bank ssl仕様変更について
 

20081120 lt11th ace