Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Phpインタフェースについて | PDF
[go: Go Back, main page]

PHPのインタフェースのお話
     2013.02.19
      片桐広和
自己紹介

•   片桐広和@株式会社メディアライン
•   プログラマ的な何か
•   バイクはリリンの生み出した(略
今回のお話の内訳

1.今回のお話のきっかけ
2.そもそもインタフェースて何?
3.どう使うの?
4.役に立つの?
5.どう使ったらハッピーになれるか
6.まとめと反省
1.今回のお話のきっかけ

PHPにはインタフェースがあるよという話をfacebookでしたら
なにそれこわい なにそれどんなの?
という話になったので、以前使ったのを思い出しつつ交流会前にちょこっと書
いてみようと思い立ちました。
2.そもそもインタフェースて何?

大まかには「クラスに対して実装されるべきメソッドを指定するもの」。
継承(extends)と違って「implements」で指定するのと、複数指定できるのが
特徴。
あと中身のあるメソッドの定義はできない。
詳しくは
http://php.net/manual/ja/language.oop5.interfaces.php
3.どう使うの?
4.役に立つの?
指定のクラスにメソッドの実装を強要できるので、

「こういうメソッドは必ず実装してね。でも実装内容はクラスによって違うよ」

というような時に便利。
継承との違いは

「継承は親のメソッドを引き継ぎ、使うことが出来る。上書きもできる」
「インタフェースはメソッドの実装を強要する」

こと。
5.どう使ったらハッピーになれるのか?

インタフェースは「コード内で明示的に実装を必須化」するもの。
PHP5だと「タイプヒンティング」もあるので、これと組み合わせるとかなり厳密
な型定義が可能になります。
結果、実装漏れや想定外の引数を渡されるなどといったことを防げるので、
ハッピーになれると思われます。
例)
ジョセフが使うスタンドは常にハーミットパープル型で、とか定義できる




ジョセフが使えないスタンド型の引数を指定した時点でエラーになるので
「ジョセフがスタープラチナの技を使うかも」とか、そういう心配をしなくて済む。




「このメソッドは必ず存在して、引数はこの型じゃないと動かない」と保証され
る。期待のものが来ているのか心配で引数をvar_dump()で確認とかしなくて
もOK。かなりハッピー。
6.まとめと反省

・インタフェースは継承と違って「如何に縛るか」という仕組み
・複数指定もできる
・タイプヒンティングと合わせて使うといいかも
・もっと色々勉強しないといかん(‘A`)
おしまい

Phpインタフェースについて