先日こんなことを言ったんだけど
PHP のソースコードを読みやすくするための工夫あれこれ – 頭ん中
配列のキーと値を結ぶやつ、何て呼ぶのか知りませんけど =>
=>
や ->
や ::
の名前について一応の解決がついたので書いておきます。
パーサエラーが教えてくれる
例えばあるはずのないところに else
があったりすると PHP はこういうエラーを返してきます。
Parse error: syntax error, unexpected T_ELSE in Command line code on line 1
この T_ELSE
というのは「パーサトークン」というやつで、PHP 内部でつけられている名前ですね。T は Token の T かな。
else
にはそのまま ELSE
という名前がついているけど、じゃあ記号を使った部分はどうなっているのか、無理矢理エラーを発生させればわかるはず。
エラーを起こしてみる
こんなファイルを作って実行してもいいし
<?php =>
コマンドラインから直接たたいてもいいし
% php -r '=>'
対話モードから入力してもいいんだけど
% php -a Interactive shell php >
とにかく =>
でパースエラーを起こしてみましょう。
=>
配列のキーと値を関連づけるのに使う =>
は
PHP Parse error: syntax error, unexpected T_DOUBLE_ARROW in Command line code on line 1
Double Arrow
でした。二重線のついた矢印だからダブルアローか。
->
プロパティや定数、メソッドにアクセスするのに使う ->
は「アロー演算子」と呼ばれていることも多いみたいだけど、少なくとも php.net のマニュアルではどこにも「アロー演算子」という言葉は出てきません。
PHP 内部でつけられている名前は
PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in Command line code on line 1
Object Operator
でした。「オブジェクト演算子」ですかね。
少なくとも「そういう名前がつけられている」のは確かなんだけど、これはあくまで「中ではそういう名前で処理されている」というだけで、それがそのまま「そういう名前である」と言えるかどうかについては議論の余地があるかもしれませんね。
ということで、内部でつけられている名前は Object Operator
だけれども「自分の中ではアロー演算子」と思って使うのは自由だし<、その場にいる人が「アロー演算子」と呼ぶことに同意するのであればもう「アロー演算子」でいいんじゃないかという気もします。
::
これは php.net のマニュアルには「スコープ定義演算子」 (英語版では “Scope Resolution Operator“) と書かれてます。
もっと簡単に「ダブルコロン」でもいいんだけど、パーサトークンを出してみたら
PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in Command line code on line 1
え?
Paamayim Nekudotayim
だそうです。読めん。
なぜこういう名前かというと
なぜダブルコロンに Paamayim Nekudotayim という名前をつけたのか、 ちょっと奇妙に感じられるかもしれません。 しかし、Zend Engine 0.5 (PHP 3のエンジン) を 書いている時に、Zend チームはこう呼ぶと決めたのです。 この奇妙な名前は、実はダブルコロンを意味するヘブライ語なのです!
とのこと。理由の説明にはなってない。
ちょっとヘブライ語の発音には疎いんだけど、探してみたらありました。
関係ないけど Forvo 便利ですね。世界中の言葉をネイティブスピーカーの発音で聞かせてくれるサービス。この時にもお世話になりました。
わかったこと
内部でつけられている名前が一般的に通用するとは限らない。