2016/04/05 14:31:01

PHP7以降は予約語がすこし増えています


Warning: Attempt to read property "post_excerpt" on null in /home/kpkyvkzp/public_html/unskilled.site/wp-content/themes/unskilled2/content-header-eyecatch.php on line 5
目次(クリックするとジャンプします)
  • 1:増えた予約語に注意
  • 1.1:いままでの予約語
  • 1.2:新しい予約語
  • 1.3:将来的な予約語に注意
  • 2:まとめ

増えた予約語に注意

プログラミング言語では言語が内部で使う文字列が予め予約されており、その文字列を「予約語」などと呼びます。

いままでの予約語

PHPでもいくつかの予約語があります。PHP5系までの予約語は以下。

  • __halt_compiler()
  • abstract
  • and
  • array()
  • as
  • break
  • callable (PHP 5.4 以降)
  • case catch
  • class
  • clone
  • const
  • continue declare
  • default
  • die()
  • do
  • echo
  • else
  • elseif
  • empty()
  • enddeclare
  • endfor
  • endforeach
  • endif
  • endswitch
  • endwhile
  • eval()
  • exit()
  • extends
  • final
  • finally (PHP 5.5 以降)
  • for
  • foreach
  • function
  • global
  • goto (PHP 5.3 以降)
  • if
  • implements
  • include
  • include_once
  • instanceof
  • insteadof (PHP 5.4 以降)
  • interface
  • isset()
  • list()
  • namespace (PHP 5.3 以降)
  • new
  • or
  • print
  • private
  • protected
  • public
  • require
  • require_once
  • return
  • static
  • switch
  • throw
  • trait (PHP 5.4 以降)
  • try
  • unset()
  • use
  • var
  • while
  • xor
  • yield (PHP 5.5 以降)
  • __CLASS__
  • __DIR__ (PHP 5.3 以降)
  • __FILE__
  • __FUNCTION__
  • __LINE__
  • __METHOD__
  • __NAMESPACE__ (PHP 5.3 以降)
  • __TRAIT__ (PHP 5.4 以降)

75個あります。結構ありますね。

新しい予約語

そしてPHP7系では以下が予約語として追加されました。

  • int
  • float
  • bool
  • string
  • true
  • false
  • null
  • resource (※)
  • object (※)
  • mixed(※)
  • numeric (※)

全部で11個の追加です。

なんだか型名みたいですが、そのとおりです。PHP7ではスカラー型のタイプヒンティング(型宣言)が使えるようになりました。タイプヒンティングに使う型名は軒並み予約語になったようです。

将来的な予約語に注意

※が付いているのは弱い予約語とされており、一応使っても大丈夫らしいのですが、近い将来に予約語として使われる可能性の高い文字列だそうです。なのでできる限り使わないことが望ましいようです。

予約語を任意で使うと直ぐにエラーがでるので気づくことになるかと思いますが、予約語の予約みたいなresourceobjectmixednumericなんかは単体で使ってしまいそうな単語ですよね。

のちのちPHPがバージョンアップした時これらの単語を使っていて、プログラムが動かなくなるという事態は避けたいですね。

まとめ

  • PHP7から11個予約語が増えて全部で86個になった。
  • resourceobjectmixednumericは予約される可能性の高い単語とされているので使わない方が無難