ハンドラとは?
この記事の動画版はこちら(画像クリックでYoutubeに飛びます)
ハンドラとは?
「ハンドラ」とは、何かを扱おうとした時に、それを行いやすくしてくれるものの「総称」です。
例えば、
「エラーハンドラ」
「イベントハンドラ」
「リクエストハンドラ」
「データベースハンドラ」
「ファイルハンドラ」
といったようなものがあります。
エラーが発生した際に、それを適切に処理するためには、発生したエラーの詳細や発生箇所を記録したり、エラーコードやエラーメッセージを作成したり、エラー発生までの過程を遡れるように、コードの実行履歴を記録したりと、ゼロから実装しようとすると、とても複雑な処理を書かなければなりません。
ユーザー操作のイベント処理や、ブラウザからのリクエスト処理、データベース処理や、ファイル入出力処理についても同様ですね。
こういった複雑な操作を間に入って代わりに行ってくれるのが「ハンドラ」というものです。
ハンドラは、よく車のハンドルに例えて説明されることがあります。
車のハンドルも、内部では複雑な仕組みで車輪を操作していますが、運転する人はそんなことは意識しなくても、ハンドルを回すという簡単な操作だけで車輪を動かすことが出来ますよね。
これと同じように、ゼロから作るととても複雑な操作も、ハンドラを使うことで簡単に扱うことが出来るという訳ですね。
クラスや関数との違いは?
こう聞くと、「じゃあクラスや関数と何が違うのか?」と疑問に感じるかと思いますが、実は一緒です。
ハンドラとは「総称」のことであり、実体はクラスや関数など色々な形で用意されています。
こういった役割を行うクラスや関数のことを「ハンドラ」と呼ぶ訳ですね。
ちなみに、ハンドラではなく「ラッパー」と呼ばれることもあります。
ラッパーは「ラップする(包み込む)」という意味から来ており、難しい処理は包み隠して、簡単に扱えるようにするためのものという意味です。
実際の例
ハンドラの身近な例としては、PHPでデータベースにアクセスする際に使う「PDO」クラス。
これは、データベースハンドラの役割を行っています。
PDOクラスを使うことで、複雑なデータベース処理が簡単に行えるようになっています。
ちなみに、PDOのインスタンスを作成する際、変数名には、僕はそのまま「$pdo」と付けることが多いんですが、
入門書のサンプルコードなどを見ると、このように「$dbh」と付けられている例も多いと思います。
これは「Database Handler」の略から来ています。
このように、ハンドラには知らず知らずの内にお世話になっているということですね。
まとめ
ということで、今回は「ハンドラ」について解説しましたが、いかがだったでしょうか?
まとめると、
①「ハンドラ」とは、何かを扱おうとしたときに、それを行いやすくしてくれるものの「総称」。
②「エラーハンドラ」「イベントハンドラ」「リクエストハンドラ」「データベースハンドラ」「ファイルハンドラ」など様々なものがある。
③実体はクラスや関数などで提供されている。
④「ラッパー」と呼ばれる場合もある。
ということでした。是非参考にしてみてください。