Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

PHP7調査(34)型名と同じクラス名が作れないようになった

PHP7から、組み込みの型名と同じクラス名・インターフェース名・trait名が作れなくなりました。

具体的には次の名前が予約されています。

  • int
  • float
  • bool
  • string
  • true
  • false
  • null
  • resource(PHP7.0時点ではエラーではなく、規約として利用禁止)
  • object(PHP7.0時点ではエラーではなく、規約として利用禁止)
  • mixed(PHP7.0時点ではエラーではなく、規約として利用禁止)
  • numeric(PHP7.0時点ではエラーではなく、規約として利用禁止)

これらは他の予約語とは異なり、変数名や関数名としては利用できます。

これは、PHP7から採用されたスカラ型のタイプヒントとの整合性の意味でも必要な修正だと言えるでしょう。intというタイプヒントがスカラ型を指しているのかユーザー定義クラスを指しているのか曖昧だと使い物になりませんからね。

コード例

<?php
class int {}
PHP Fatal error:  Cannot use 'int' as class name as it is reserved in /tmp/foo.php on line 2

直近の動向

voidも予約語にしようぜ、なんて話題がinternal MLで今も上がっています。

参照

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
7
Help us understand the problem. What are the problem?