PHPの定義済み関数
そふぃのPHP入門 >> PHP言語リファレンス >> ユーザ定義関数 >> PHPの定義済み関数

PHPの定義済み関数

PHPの定義済み関数

PHPには非常にたくさんの組み込み関数があります。つまり、PHPをインストールした時点で使えるようになっている定義済み関数です。この中にはすでにご紹介したprint_r()関数やstrlen()関数などなど、非常にたくさんの関数があります。試しに現在の私の環境で使える定義済み関数がいくつあるか出力してみます。

内部関数使用可能数:3150

使用できる関数にはそれぞれの環境によって違いがあります。何故かというと、PHPに必ずついてくる関数(print_r()関数やstrlen()関数はこれです)の他に拡張機能が有効になっていて初めて使用できる関数というのがあるからです。

拡張機能で有名なのはMySQLやPostgreSQLなどのデータベースや画像を扱えるようになるGDなどがありますが、これらの拡張機能に付属して付いてくる関数というのは、その拡張機能が有効であれば使用可能、拡張機能自体が無効なら使用不可能です。具体的には拡張機能が無効だと付属関数は「undefined function」(未定義の関数)として扱われ、エラーの原因となります。つまり、GDに対応してないレンタルサーバなどでいくら画像処理を行おうとしてもできないって事です。拡張機能の設定はサーバに依存するのでレンタルサーバなどだと制限の多いところもあるかと思います。

さらに、PHPのバージョンによって付属する関数に違いがあります。バージョンが新しいほど追加されている関数が多くなってると思っておけばいいかもしれません。

このようにバージョンや拡張機能などによって使用できる関数には違いがありますので、一概にいくつあるとは言えませんが、拡張機能のON/OFFはphpinfo()関数またはget_loaded_extensions()関数で調べる事ができますし、現在使用できる関数というのはget_defined_functions()関数で確認できます。

使用しているサーバでどのような拡張機能が有効でどのような関数が使えるかを知りたくなった時はこれらの関数を試してみて下さい。

参考 PHP関数リファレンス

また、全ての関数のリファレンスをPHPマニュアルで読む事ができますので、関数が分からなくなったら調べてみるといいでしょう。拡張機能ごとに関数が分かれているので、使える関数と使えない関数を混同することなく調べられます。PHPマニュアルの右上に検索ボックスがありますが、関数名を入力するとその関数のページにそのままジャンプしてくれます。

書式・バージョンの読み方

PHPマニュアルのそれぞれ関数の項目にはバージョン情報や関数の使用方法が載せられています。バージョンは、どのバージョンで使用可能かというものですが、使用方法は書式というもので表されます。書式は読み方が分からないと何が書いてあるのかさっぱり分からないと思うので、PHPマニュアルの書式がどのように表されているかを説明しておきます。

バージョン情報

書式の前に関数のバージョンの読み方です。これは説明しなくても分かるかもしれませんが、ま、一応ww。バージョンは以下のような形式で表されます。

PHP 4 >= 4.3.0, PHP 5

このように書いてあった場合は「PHP4.3.0以降使用可能」って意味です。もちろんPHP3では使えません。このように複雑な書き方ではなく、あるバージョン全てを通して使える関数は

PHP 3, PHP 4, PHP 5 や PHP 4, PHP 5

などと表記されています。

書式情報

さて肝心の書式ですが、書式を読むためには型を少しだけ理解しておく必要があります。各型がどのようなものなのかまでは追々でもいいですが、型とは何か、またPHPで型がどのように扱われているか、などの型についての概念だけは理解しておいて下さい。

参考 型について

書式は以下のような形で表されます。

返り値の型 関数名 ( 引数の型 引数の名前 )

さっき挙げたstrlen()関数を例に出してみます。

書式

  • int strlen( string string )

さて、strlen()関数の書式の場合は

  • 返り値がint(整数型)
  • 引数にはstring(文字列)を、string(文字列型)で指定する

と書式情報から読み取れます。

参考関数

  • strlen() ---- 文字列の長さを取得する

次に複数の引数を取る関数の場合の例です。オプション引数(省略可能な引数)がある場合は、オプションである事を示す為に角括弧「[]」で囲みます。

例を挙げる関数はdefine()関数です。

書式

  • bool define( string name , mixed value [, bool case_insensitive ] )

これもPHPマニュアルでは引数の名前がそれぞれ「name」「value」「case_insensitive」になってます。

さて、define()関数の書式の場合は

  • 返り値がbool(論理型)--成功した場合にTRUE/失敗した場合にFALSEというものが多い
  • 第1引数にnameを文字列型で指定
  • 第2引数はvalueを指定。型は複数使用可能。
  • 第3引数にcase_insensitiveというオプション引数があり、論理型で指定できる。

mixedという型で紹介されていないものが出てきましたが、これは書式情報(やマニュアルでの説明)にのみ使う特別な型の表現方法で、「複数の違った型で指定可能」という意味になります。つまり、どの型の引数を指定してもいいわけです。但し、たまに文字列型や整数型はいいけれども配列型はだめ、などのように決まっている場合もあります。このような細かい取り決めは各関数の説明として記述されています。

このような特別な型の表現には「mixed」の他に「number」と「callback」があります。numberは引数が「整数型か浮動小数点型のどちらでも良い」という意味です。callbackは「ユーザーが定義するコールバック関数を引数とする」という意味です。コールバック関数とは呼び出すと相手が逆に自分の中の関数を呼び出してくれるような関数です。細かい説明はここでは省きます。

そういえば、「void」って表現方法もありました。voidは今までのように「型」の表現ではなく説明文みたいなもんなのですが、単純に「なし」という意味です。引数が必要ない関数や返り値がない関数に使われています。

補足ですが、bool(論理型)の返り値を持つ関数は、成功した場合にTRUE/失敗した場合にFALSEというものが多いです。当たり前ですが、何に成功/失敗かは各関数によって違います。上記のdefine()関数の場合は「定数定義に成功した時にTRUE/失敗した時にFALSEを返す」です。

参考関数