回答編集履歴

1 追記

suyama

suyama score 4189

2017/11/27 18:06  投稿

`正常に実行されます`の状況が不明ですが、未定義の変数がある場合、PHPはそれを文字列として解釈します。
PHP5.6とPHP7.0で試してみましたが、どちらも動作は同じようでした。
仕様の確認までしていませんが、7.1は変わっているのかもしれません。
```text
$ php -v
PHP 5.6.31-6+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
   with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
   with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
$ php
<?php
const hoge = 'FUGA';
var_dump(hoge);
var_dump(HOGE);
string(4) "FUGA"
PHP Notice: Use of undefined constant HOGE - assumed 'HOGE' in - on line 5
Notice: Use of undefined constant HOGE - assumed 'HOGE' in - on line 5
string(4) "HOGE"
```
```text
$ php -v
PHP 7.0.18-0ubuntu0.17.04.1 (cli) (built: Apr 26 2017 23:59:48) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
   with Zend OPcache v7.0.18-0ubuntu0.17.04.1, Copyright (c) 1999-2017, by Zend Technologies
$ php
<?php
const hoge = 'FUGA';
var_dump(hoge);
var_dump(HOGE);
string(4) "FUGA"
PHP Notice: Use of undefined constant HOGE - assumed 'HOGE' in - on line 5
string(4) "HOGE"
```  
 
---  
追記:  
 
すぐにPHP5.5が試せる環境が手元にありませんでしたが、PHP5.4で試しても同じ挙動だったので、5.5だけ異なるということはないかと思います。  
動作の違いは、定数の処理方法によるものではないものと推測します。  
 
```text  
$ php -v  
PHP 5.4.16 (cli) (built: Nov 15 2017 16:33:54)  
Copyright (c) 1997-2013 The PHP Group  
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies  
$ php  
<?php  
const hoge = 'FUGA';  
 
var_dump(hoge);  
var_dump(HOGE);  
string(4) "FUGA"  
PHP Notice: Use of undefined constant HOGE - assumed 'HOGE' in - on line 5  
string(4) "HOGE"  
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る