ソースコードを読む時に使えるPHP関数の覚え方
Skrumエンジニアの根岸です。
PHPにはたくさんのビルトイン関数が用意されていて実装時にドキュメントを読みながら利用することも多いと思います。
ただ、似ている関数名やパッと意味が分かりづらい関数名がありこの関数何だっけってなることないでしょうか。例えば、implode
とexplode
とか。どっちがどっちだっけってよくなります。
実装時には仕様詳細を正確に確認する必要があるためドキュメントを読めばいいとして、ソースコードを読むだけの時に毎回調べてたら疲れてしまうので、ソースコードを読む時にどんな関数だったかを思い出せるような関数の覚え方をまとめてみたいと思います。
explode と implode
explode — 文字列を文字列により分割する
implode — 配列要素を文字列により連結する
explodeは英語で「爆発する」、implodeは英語で「内側に破裂する」という意味です。これだと意味がよく分かりませんが、ex- が「外へ」im- が「内へ」という意味なので、文字のかたまりが内側から破裂する=分割、文字のかたまりを外側から圧力をかけて固める=連結という感じにすると覚えやすいのではないでしょうか。(plode =「破裂」)
print と printf と sprintf
print — 文字列を出力する
printf — フォーマット済みの文字列を出力する
sprintf — フォーマットされた文字列を返す
printは文字列を出力する関数です。出力というのは通常、標準出力となります。fはformatを意味しますので、printfはフォーマッティングした文字列を出力する、という意味です。
一方でsprintfのsはstringのことで、これはこの関数が戻り値として文字列を返すということです。(printとprintfは出力するだけで文字列を戻り値としては返しません。ただ、戻り値は返しており、printは常に1を、printfは出力した文字列の長さを返します。)
strtr
strtr — 文字の変換あるいは部分文字列の置換を行う
strtrはstr_replaceと同じく文字列を置換する関数です。(厳密には少し動作が異なります。)
strtrのstrはstring、trはtranslateです。translateには翻訳という意味だけでなく「変換」という意味があります。
preg_match と preg_replace と preg_quote
preg_match — 正規表現によるマッチングを行う
preg_replace — 正規表現検索および置換を行う
preg_quote — 正規表現文字をクオートする
Regexはおなじみ正規表現ですよね。(Regular expression)
pregは、Perform a regular expressionです。
substr と mb_substr
substr — 文字列の一部分を返す
mb_substr — 文字列の一部を得る
substrはsubstringのことで、「部分文字列」という意味です。そのままですね。
mbはmulti-byte(マルチバイト)です。mb_substrは文字コードを指定することでマルチバイト文字にも対応したものです。日本語の文字列を扱う場合はmb_substrを使う必要があります。
strlen と mb_strlen
strlen — 文字列の長さを得る
mb_strlen — 文字列の長さを得る
strlenはstring lengthです。そのままですね。
こちらもmbはmulti-byte(マルチバイト)で、日本語の文字列の長さを取得するときはmb_strlenを使う必要があります。
strpos と mb_strpos
strpos — 文字列内の部分文字列が最初に現れる場所を見つける
mb_strpos — 文字列の中に指定した文字列が最初に現れる位置を見つける
strposはstring positionです。
mbはmulti-byte(マルチバイト)です。
stripos と mb_stripos
stripos — 大文字小文字を区別せずに文字列が最初に現れる位置を探す
mb_stripos — 大文字小文字を区別せず、 文字列の中で指定した文字列が最初に現れる位置を探す
strposとstripos、似てますね。
striposの i はstringの i と思いきや違います。case-insensitiveの i です。case-insensitiveは「大文字・小文字を区別しない」という意味です。
array_shift と array_pop
array_shift — 配列の先頭から要素を一つ取り出す
array_pop — 配列の末尾から要素を取り除く
shiftはそのままの意味で、シフトするという意味です。先頭の要素を1つ取り出して、2つ目以降の要素を1つずらします(シフトします)。(2つ目の要素からインデックスをゼロから振り直す)
popには、「(コルクなどが)ポンと抜ける」という意味があります。一番最後の要素をポンと取り除くイメージでしょうか。
realpath
realpath — 正規化された絶対パス名を返す
realpathはrealなpathです。絶対パスというだけならabsolute pathですが、何が “real” なのかというと、realpathという関数は絶対パスをただ返すのではなく、絶対パス中のシンボリックリンクを全て展開して返すのです。なのでabsoluteだけでは不十分で、”real”「本当の」ということでしょうか。