SlideShare a Scribd company logo
1 of 11
Download to read offline
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`)
おしまい

More Related Content

What's hot

20111206 GLT vol.40
20111206 GLT vol.4020111206 GLT vol.40
20111206 GLT vol.40
kashew_nuts
 

What's hot (20)

S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4
 
私とUnityとLINQと
私とUnityとLINQと私とUnityとLINQと
私とUnityとLINQと
 
「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」「長野で語るStapyのビジョン」
「長野で語るStapyのビジョン」
 
英語オーラル系授業の教室外活動での PoodLLの利用
英語オーラル系授業の教室外活動での PoodLLの利用英語オーラル系授業の教室外活動での PoodLLの利用
英語オーラル系授業の教室外活動での PoodLLの利用
 
NPCA-LT 冒頭挨拶[OSC Kyoto 2014]
NPCA-LT 冒頭挨拶[OSC Kyoto 2014]NPCA-LT 冒頭挨拶[OSC Kyoto 2014]
NPCA-LT 冒頭挨拶[OSC Kyoto 2014]
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5
 
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
 
20111206 GLT vol.40
20111206 GLT vol.4020111206 GLT vol.40
20111206 GLT vol.40
 
紹介 絵本レコメ 2014年02月_rev01
紹介 絵本レコメ 2014年02月_rev01紹介 絵本レコメ 2014年02月_rev01
紹介 絵本レコメ 2014年02月_rev01
 
「LINQ」っていう名前だけでも 覚えて帰ってください!
「LINQ」っていう名前だけでも 覚えて帰ってください!「LINQ」っていう名前だけでも 覚えて帰ってください!
「LINQ」っていう名前だけでも 覚えて帰ってください!
 
そうだ!勉強会に参加しよう!
そうだ!勉強会に参加しよう!そうだ!勉強会に参加しよう!
そうだ!勉強会に参加しよう!
 
20150309 iscover challange_twitter_bot
20150309 iscover challange_twitter_bot20150309 iscover challange_twitter_bot
20150309 iscover challange_twitter_bot
 
S02 t0 get_started
S02 t0 get_startedS02 t0 get_started
S02 t0 get_started
 
Python勉強会in 長野 オープニング
Python勉強会in 長野 オープニングPython勉強会in 長野 オープニング
Python勉強会in 長野 オープニング
 
UDトークアプリ新たな機能
UDトークアプリ新たな機能UDトークアプリ新たな機能
UDトークアプリ新たな機能
 
S10 t0 orientation
S10 t0 orientationS10 t0 orientation
S10 t0 orientation
 
ロボアプリ名:秘密のPepperちゃん
ロボアプリ名:秘密のPepperちゃんロボアプリ名:秘密のPepperちゃん
ロボアプリ名:秘密のPepperちゃん
 
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
微博(ウェイボ)型社内SNSとモバイルで始める社内の可視化
 
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
 

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

気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会
Yu Shibatsuji
 
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
Eric Sartre
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
 

Similar to Phpインタフェースについて (20)

DevOpsって何?
DevOpsって何?DevOpsって何?
DevOpsって何?
 
PHP with Visual Studio
PHP with Visual StudioPHP with Visual Studio
PHP with Visual Studio
 
20140621 CreatorsMeetUp17
20140621 CreatorsMeetUp1720140621 CreatorsMeetUp17
20140621 CreatorsMeetUp17
 
DevOps 研修 初級編
DevOps 研修 初級編DevOps 研修 初級編
DevOps 研修 初級編
 
windows向けツール紹介
windows向けツール紹介windows向けツール紹介
windows向けツール紹介
 
気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会気の合う人達と社外で社内勉強会
気の合う人達と社外で社内勉強会
 
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
Word Fes 2015 ライトニングトーク「WordPress+Yii2で簡単データパネル」
 
パワーポイントを作るときに抑えておきたい色んなところ
パワーポイントを作るときに抑えておきたい色んなところパワーポイントを作るときに抑えておきたい色んなところ
パワーポイントを作るときに抑えておきたい色んなところ
 
スモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップスモールリーダーシップ読書会ワークショップ
スモールリーダーシップ読書会ワークショップ
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
 
自己紹介とWebサービスAPI勉強会について
自己紹介とWebサービスAPI勉強会について自己紹介とWebサービスAPI勉強会について
自己紹介とWebサービスAPI勉強会について
 
俺とコミュニティ活動のタスク
俺とコミュニティ活動のタスク俺とコミュニティ活動のタスク
俺とコミュニティ活動のタスク
 
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
 
リモート環境でも社内勉強会(てっくらんち)を運営してよかった!! - Bit valley inside- vol.17-kazuyuki takahashi
リモート環境でも社内勉強会(てっくらんち)を運営してよかった!! - Bit valley  inside- vol.17-kazuyuki takahashiリモート環境でも社内勉強会(てっくらんち)を運営してよかった!! - Bit valley  inside- vol.17-kazuyuki takahashi
リモート環境でも社内勉強会(てっくらんち)を運営してよかった!! - Bit valley inside- vol.17-kazuyuki takahashi
 
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
 
ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争ぼくとしりとりの約3.0*10^3日間戦争
ぼくとしりとりの約3.0*10^3日間戦争
 
部屋とワイシャツと PHPとアジャイル開発と 私
部屋とワイシャツとPHPとアジャイル開発と私部屋とワイシャツとPHPとアジャイル開発と私
部屋とワイシャツと PHPとアジャイル開発と 私
 
ファシリテーター2.0公開用
ファシリテーター2.0公開用ファシリテーター2.0公開用
ファシリテーター2.0公開用
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
 

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