PHPのタイプヒンティング

>100 Views

March 03, 15

スライド概要

PHPのタイプヒンティングについてざっと調べた内容を、社内勉強会向けにまとめました。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

PHPの タイプヒンティングを使う 2015/03 RW社内勉強会用 岡本秀高

2.

できること タイプヒンティングを使うと、 「意図しない引数」を 事前に弾くことができる。

3.

タイプヒンティングとは?

4.

タイプヒンティングとは? 関数の引数の「型」を明示すること。 意図しない型の引数によるエラーを 防ぐことができる。 *PHP5から導入された

5.

例えばこれが・・・ $array = [1,2,3,4]; normal($array); function normal($array){ if(is_array($array)){ foreach ($array as $key => $value) { echo $value; } } }

6.

こうなる $array = [1,2,3,4]; normal($array); function normal(array $array){ foreach ($array as $key => $value) { echo $value; } }

7.

DIFF $array = [1,2,3,4]; $array = [1,2,3,4]; normal($array); normal($array); function normal($array){ function normal(array $array){ if(is_array($array)){ foreach ($array as $key => $value) { foreach ($array as $key => $value) { echo $value; echo $value; } } } } }

8.

消えた「IS_ARRAY()」 タイプヒンティングを使えば、 関数を呼び出した段階で 型判定が行われる。

9.

配列以外を渡してみる $array = 1; $array = 1; normal($array); normal($array); function normal($array){ function normal(array $array){ if(is_array($array)){ foreach ($array as $key => $value) { foreach ($array as $key => $value) { echo $value; echo $value; } } } } }

10.

配列以外を渡してみた結果 何も起きない Fatal Error

11.

エラー内容を読む Catchable fatal error: Argument 1 passed to normal() must be of the type array, integer given,

12.

エラー内容を読む Catchable fatal error: Argument 1 passed to normal() must be of the type array, integer given, →配列が欲しいのに数字が来た(憤怒)

13.

エラー内容を読む Catchable fatal error: Argument 1 passed to normal() must be of the type array, integer given, →配列が欲しいのに数字が来た(憤怒)

14.

タイプヒンティングのメリット ・タイプヒンティングのFatalErrorはキャッチ可能 ・「関数コール時にコケる」から原因の特定が楽 ・「この型以外の引数を渡すな」という無言の圧力 ・型判定のためのif分岐をなくしてコードの簡略化

15.

TRY IT! ・タイプヒンティング (クラスとオブジェクト) - PHPプロ!マニュアル : http://www.phppro.jp/phpmanual/php/language.oop5.typehinting.html ・PHP: タイプヒンティング - Manual : http://php.net/manual/ja/language.oop5.typehinting.php ・初心者向け タイプヒンティングとはなんなのかというお話 : http://dekokun.github.io/posts/2013-12-14.html