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