Successfully reported this slideshow.
CakePHP2.0の例外処理ちょっとだけ食べてみた<br />2011.10.06 (Thur)<br />橋口 誠 a.k.a. gusagi<br />
自己紹介<br />
@gusagi<br />menue株式会社 所属<br />ケータイサイトとか作ってます<br />実は、今月は絶賛修羅場中…(´Д`;)<br />PHP勉強会@関東 の幹事やってます<br />『パーフェクトPHP』書きました<br />...
今日のお題は<br />
エラーハンドリング<br />
アジェンダ<br />1.3までのエラーハンドリングについて<br />2.0からのエラーハンドリングについて<br />手始めにPagesControllerでつまみ食い<br />独自ExceptionRendererについて<br />
1.3.x までは<br />
Controller::cakeError()とAppError<br />
でも<br />
cakeError removed<br />http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html<br />
The error handling implementation has dramatically changed in 2.0.<br />http://book.cakephp.org/2.0/en/appendices/2-0-migr...
2.0で実装が劇的に変わったよ!<br />
2.0 からは<br />
例外処理<br />
Cakephp/lib/Cake/Error/<br />ErrorHandler.php<br />ExceptionRenderer.php<br />exceptions.php<br />
app/Config/core.php<br />Configure::write(<br />  'Exception', array(<br />     'handler' => 'ErrorHandler::handleExceptio...
Exceptions<br />
lib/Cake/Error/exceptions.php<br />ForbiddenException<br />NotFoundException<br />InternalErrorException<br />     ・<br />...
全部で40個<br />
ということで?<br />
例外処理をつまみ食い<br />
手始めに<br />
PagesControllerでつまみ食い<br />
PagesController::display()<br />
MissingViewException<br />
HTTPステータスコード<br />
“500 Internal Server Error”<br />
普通は“404 Not Found”じゃないの?<br />
PagesControllerをちょっと修正<br />
まずはlib/Cake/Controller/PagesController.php↓app/Controller/PagesController.phpにコピー<br />
app/Controller/PagesController.php<br />//$this->render(implode('/', $path));<br />try {<br />    $this->render(implode('/...
Not Foundになった!<br />
でも画面表示が…<br />
そんなときは独自ExceptionRenderer<br />
app/Config/core.php<br />Configure::write(<br />   'Exception.renderer',<br />   'CustomExceptionRenderer‘<br />);<br />Ap...
app/Lib/Error/CustomExceptionRenderer.phpを作成<br />※ファイル・クラス名は任意で指定可能<br />
app/Lib/Error/ClassName.phpじゃないとApp::uses(‘ClassName’, ‘Error’);で呼び出せないので気をつける<br />
処理内容はお好みでどうぞ<br />
たとえば、こんな感じで…<br />
まとめ<br />
CakePHP 2.0ではエラーハンドリングが柔軟にカスタマイズ可能!<br />
マイグレーションはちょっと面倒かも知れないけど<br />
例外処理を楽しんでね><<br />
以上、ご清聴ありがとうございました<br />
Upcoming SlideShare
Loading in …5
×

20111006 cakephp2.0 study

3,740 views

Published on

第2回CakePHP2.0勉強会
「CakePHP2.0の例外処理 、ちょっとだけ食べてみた」

Published in: Technology
  • Be the first to comment

20111006 cakephp2.0 study

  1. 1. CakePHP2.0の例外処理ちょっとだけ食べてみた<br />2011.10.06 (Thur)<br />橋口 誠 a.k.a. gusagi<br />
  2. 2. 自己紹介<br />
  3. 3. @gusagi<br />menue株式会社 所属<br />ケータイサイトとか作ってます<br />実は、今月は絶賛修羅場中…(´Д`;)<br />PHP勉強会@関東 の幹事やってます<br />『パーフェクトPHP』書きました<br />実はCakePHPあまり使っていません…<br />
  4. 4. 今日のお題は<br />
  5. 5. エラーハンドリング<br />
  6. 6. アジェンダ<br />1.3までのエラーハンドリングについて<br />2.0からのエラーハンドリングについて<br />手始めにPagesControllerでつまみ食い<br />独自ExceptionRendererについて<br />
  7. 7. 1.3.x までは<br />
  8. 8. Controller::cakeError()とAppError<br />
  9. 9. でも<br />
  10. 10. cakeError removed<br />http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html<br />
  11. 11. The error handling implementation has dramatically changed in 2.0.<br />http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html<br />
  12. 12. 2.0で実装が劇的に変わったよ!<br />
  13. 13. 2.0 からは<br />
  14. 14. 例外処理<br />
  15. 15. Cakephp/lib/Cake/Error/<br />ErrorHandler.php<br />ExceptionRenderer.php<br />exceptions.php<br />
  16. 16. app/Config/core.php<br />Configure::write(<br /> 'Exception', array(<br /> 'handler' => 'ErrorHandler::handleException',<br /> 'renderer' => 'ExceptionRenderer',<br /> 'log' => true<br />));<br />
  17. 17. Exceptions<br />
  18. 18. lib/Cake/Error/exceptions.php<br />ForbiddenException<br />NotFoundException<br />InternalErrorException<br />     ・<br />     ・<br />     ・<br />CakeException<br />MissingControllerException<br />MissingActionException<br />MissingViewException<br />
  19. 19. 全部で40個<br />
  20. 20. ということで?<br />
  21. 21. 例外処理をつまみ食い<br />
  22. 22. 手始めに<br />
  23. 23. PagesControllerでつまみ食い<br />
  24. 24. PagesController::display()<br />
  25. 25. MissingViewException<br />
  26. 26. HTTPステータスコード<br />
  27. 27. “500 Internal Server Error”<br />
  28. 28. 普通は“404 Not Found”じゃないの?<br />
  29. 29. PagesControllerをちょっと修正<br />
  30. 30. まずはlib/Cake/Controller/PagesController.php↓app/Controller/PagesController.phpにコピー<br />
  31. 31. app/Controller/PagesController.php<br />//$this->render(implode('/', $path));<br />try {<br /> $this->render(implode('/', $path));<br />} catch (MissingViewException $exception) {<br /> if (Configure::read('debug') > 0) {<br /> $attributes = $exception->getAttributes();<br /> throw new MissingViewException(array('file' => $attributes['file']));<br /> } else {<br />throw new NotFoundException();<br /> }<br />}<br />
  32. 32. Not Foundになった!<br />
  33. 33. でも画面表示が…<br />
  34. 34. そんなときは独自ExceptionRenderer<br />
  35. 35. app/Config/core.php<br />Configure::write(<br /> 'Exception.renderer',<br /> 'CustomExceptionRenderer‘<br />);<br />App::uses('CustomExceptionRenderer', 'Error');<br />
  36. 36. app/Lib/Error/CustomExceptionRenderer.phpを作成<br />※ファイル・クラス名は任意で指定可能<br />
  37. 37. app/Lib/Error/ClassName.phpじゃないとApp::uses(‘ClassName’, ‘Error’);で呼び出せないので気をつける<br />
  38. 38. 処理内容はお好みでどうぞ<br />
  39. 39. たとえば、こんな感じで…<br />
  40. 40. まとめ<br />
  41. 41. CakePHP 2.0ではエラーハンドリングが柔軟にカスタマイズ可能!<br />
  42. 42. マイグレーションはちょっと面倒かも知れないけど<br />
  43. 43. 例外処理を楽しんでね><<br />
  44. 44. 以上、ご清聴ありがとうございました<br />

×