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

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

More than 5 years have passed since last update.

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で今も上がっています。

参照

hnw
境界値バグが大好物。自分の日記で書くには小ネタすぎるネタをQiitaに書いています。
https://hnw.hatenablog.com/
klab
モバイルオンラインゲーム、その他スマートフォン関連サービス、及びサーバーインフラ開発・運用
http://www.klab.com/jp/
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
ユーザーは見つかりませんでした