PHP 7 系で new
や for
などの予約語がメソッド名などに使えるようになっているのは知っていたけど、イマイチその対象と範囲が理解できていなかったので手を動かして確認してみた。
Query::new()->for('foo')->as('hoge')->if(42)->and('bar')->or('baz')->list()->echo();
みたいなやつ。
結論としては、マニュアルに書いてあるとおりで、「これらのキーワードを プロパティや定数の名前として使える」(クラスやインタフェースやトレイトや関数の名前には使えない)という理解で間違いなさそう。
だだし、明記されているとおり class はメソッドやプロパティの名前には使えない。
default はクラス名・インタフェース名・トレイト名にだけ使えて、関数の名前には使えないのがおもしろい。
class | interface | trait | function | var | method | property | |
---|---|---|---|---|---|---|---|
abstract | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
and | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
array | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
as | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
break | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
callable | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
case | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
catch | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
class | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ |
clone | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
const | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
continue | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
declare | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
default | ok | ok | ok | ✘ | ok | ok | ok |
die | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
do | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
echo | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
else | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
elseif | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
empty | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
enddeclare | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
endfor | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
endforeach | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
endif | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
endswitch | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
endwhile | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
eval | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
exit | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
extends | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
final | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
finally | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
for | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
foreach | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
function | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
global | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
goto | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
if | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
implements | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
include | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
include_once | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
instanceof | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
insteadof | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
interface | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
isset | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
list | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
namespace | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
new | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
or | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
✘ | ✘ | ✘ | ✘ | ok | ok | ok | |
private | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
protected | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
public | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
require | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
require_once | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
return | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
static | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
switch | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
throw | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
trait | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
try | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
unset | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
use | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
var | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
while | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
xor | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |
yield | ✘ | ✘ | ✘ | ✘ | ok | ok | ok |