Help us understand the problem. What is going on with this article?

PHPのタイプヒンティングメモ

More than 1 year has passed since last update.

PHP7になってからタイプヒンティング(型宣言)が増えたのもあって、いつこれが追加されたのか?といったところがよくわからなくなってきたのでメモしました。

関数の引数に書けるタイプヒンティング

ドキュメントに書いてあるものをほぼそのまま持ってきました。

利用可能になるバージョン
クラス/インターフェース名 5.0.0
self 5.0.0
array 5.1.0
callable 5.4.0
bool 7.0.0
float 7.0.0
int 7.0.0
string 7.0.0
iterable 7.1.0
object 7.2.0

戻り値に書けるタイプヒンティング(7以降

php7から戻り値にもタイプヒンティングが記載できるようになりました。
基本的には関数に書けるものと同じです。

function test(): int

また、php7.1からはvoid型もサポートします。

function test(): void

強い型付けを要求する(7以降

デフォルトの場合は、緩い型付けが許容されるので可能な限りはその型に変換されるようになっています。(スカラー型のみ)

強い型付けを実現するには、declare(strict_types=1);を書きます。
もし、型があってない場合はTypeErrorをスローします。

タイプヒンティングしてるけどnullableにもしたい

PHP7.1未満のバージョンの場合は、引数のデフォルト値にnullを指定すると動作します。(厳密には似たような動きをするだけです)

function test(int $number = null)

PHP7.1からは型の前に?をつけます。なお、これは戻り値の型にも指定できます。

function test(?int $number)

7.1から導入されたiterable

iterableは7.1から導入されている疑似型です。
arrayや、Traversable(foreachで回せる)を実装したものであれば受け取ることが出来ます。

おまけ

7.1からはクラス定数にもアクセス修飾子を指定可能になっている

いままではクラス定数にアクセス修飾子(publicなど)をつけることは出来ませんでしたが、7.1から可能になっています。

class Sample {
    public const $test;
fagai
Webプログラマだよー、LaravelとDockerやるよー
http://blog.fagai.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした