• How to design user-defined exception with PHP ( >=) • 特にアプリケーション領域の基底クラスの設計 • Especially, a base exception class of application domain • Symfonyなどのフレームワークの内部実装も眺めて 参考にする • Refer to internal implementations of some application frameworks
• 適切なスコープをきってハンドリングしたい • I want to handle errors with appropriate scopes • 実⾏時エラー‧検査時エラー • Runtime error / Inspection error • ⾃分たちのチームコードのドメイン内‧外 • Inside and outside of our development code
Robustness: No faults in system specifications, design and implementation 堅牢性: 予期せぬ状況下でも機能し続けられる能⼒ Robustness: Ability to continue to function under unexpected circumstances Steve McConnell. Code Complete 第2版 完全なプログラミングを⽬指して / 第5部 コードの改良
“Sticking to legitimacy impairs robustness, and sticking to legitimacy impairs legitimacy.” Steve McConnell. Code Complete 第2版 完全なプログラミングを⽬指して / 第5部 コードの改良
the macro https://speakerdeck.com/twada/php-conference- ?slide= PHP で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference by Takuya Wada “個々のクラスは正当性を重視し堅牢性はアーキテ クチャ/フレームワーク等で保証するのがオススメ” “It is recommended that each class emphasizes legitimacy and robustness is guaranteed by architecture or framework etc”
適切なスコープでのエラーハンドリングを促す • Encourage error handling with appropriate scope • 堅牢性をもったエラーハンドリングするための、 チームコードの⼤スコープを補⾜できる • Complement the large scope of team code for robust error handling
user-defined interface that inherits Throwable in the scope of Component • ⇒⾃分たちで作る例外全体を補⾜できる • -> Supplement the entire exception you create ✍ Symfony Component user-defined exception
use user-defined exceptions with proper scope in mind • 例:実⾏時or例外時、アプリケーションレイ ヤー …etc) • ex. Runtime or Inspection, application layer etc Benefits by making your user-defined exception