支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

PHPは90年代中盤にリリースされた「Hypertext Preprocessor」というプログラミング言語の略で、Webシステムと相性が良くHTML内に埋め込めこんでの利用も可能です。近年ではブログやホームページ作りに欠かせないCMS「WordPress」にも利用されており、リリースから30年以上経った今でも多くのシステムで採用されている言語の一つです。この記事ではPHPでのプログラミング効率を高める要員の一つとなる「function」の役割や使い方について紹介していきます。

関数の役割とは?

関数という言葉は数学を勉強する中で良く耳にしてきたとことでしょう。PHPにおける関数も数学の場合と基本的な役割は変わらず、x、y等の変数を使ってある処理をひとまとめにしたものです。数学で「y=ax+b」という1次関数がありましたが、例えば「y=2x+3」と「x=2」が与えられた場合、自ずとyの値が求められます。なぜこの公式になったのかを知らなくても足し算や掛け算さえできれば答えが分かり、変数に代入する数字を変えれば別の計算結果も求められます。このようにPHPの関数も、コーディング内容を具体的に把握していないプログラマーでも簡単に利用でき、何度も汎用的に使い回すことが可能です。ただしPHPを含めた多くのプログラミング言語には2つの性質を持った関数(概念は同じでも関数と呼ばない言語もあります)があるため、次に解説します。

PHPにおける関数の種類

関数の種類と言っても分類は単純で、あらかじめPHPプログラムとして用意(定義)されている「組み込み関数」か、ユーザーが自分で用意(定義)する「ユーザー定義関数」かの2種類です。

PHPにおける組み込み関数は、メールを送信するための「mail」や画像処理に関する「GD」、暗号通信を行うための「OpenSSL」等で、それぞれの関数には変数に与えられる型や具体的な処理内容が記述されています。例えば「mail」関数をそのまま利用すれば送信元・宛先・メッセージ内容等の値を渡すだけで実際にメールの送受信が可能となります。

一方のユーザー定義関数は、プログラマー自らが処理内容等を記述して、その後も様々な場面で同じ処理内容を再利用できる仕組みです。この関数を作成する際に必要なのが「function」です。ユーザー定義関数の中ではPHPの基本的なコードはもちろん、別の関数を中に入れ込んで作成することも可能です。

ユーザー定義関数(function)の利用方法

関数を使い慣れていない人、PHPで初めて関数を使う人のために関数の基本について簡単に触れておきます。

基本的な利用の流れは、まず関数の定義をし、その定義した関数を呼び出して実行するという流れになります。PHPでも他のプログラミング言語同様に引数(パラメータ)や戻り値(返り値)が利用できます。なお引数とは関数に何らかの値を渡すために利用される箱で、戻り値は関数で処理された結果のことを表します。引数で受け取った数字同士を足し算する関数があったとすると、その足し算された結果を返すのが戻り値という関係になります。またPHP独自のルールとして、変数を指定する際には先頭に「$」を付ける必要があります。

ユーザー定義関数も以上のようなプログラミングの基礎となる要素やその他の関数を組み込みますが、はじめに覚えておくこととして、関数を定義する際には必ず頭に「function」と記述しなければなりません。「function 任意の関数名( )」と記述し、その後に続けて処理内容や「return 戻り値」等を記述し、それらを{ }で囲います。この定義した関数を別の場所で「任意の関数名( );」として呼び出すことで結果を返すことができます。なお「function 任意の関数名(引数)」とすることで、関数を実行する際に指定されている値を引数で受け取って処理を実行できるようになります。

関数を定義する際に注意することとしてはどこまでの処理を汎用化するかをあらかじめ考えておくことです。例えば足し算をする関数を作成するとして、あるプログラムでは計算結果を表示させる処理が何度も出てくるとします。この場合は関数内に「echo(PHPで文字列を表示させる場合に利用される)」の記述まで含めると便利です。しかし足し算するところまでは共通していても、別の部分では、さらに割り算や掛け算をしたうえで結果を表示させたいとなると、足し算をした時点での結果表示は邪魔になってしまいます。どこまでを含めるかによって引数や戻り値の利用有無も異なってきます。システム構築において共通する部分をまとめたテンプレートやフレームワークを作成するイメージを持っておくとfunctionを使いこなせることでしょう。

命名規則

ユーザー定義関数の関数名に関しては任意となりますが、PHP内の命名規則には従う必要があります。文字またはアンダースコア(_)ではじめ、関数に複数の単語が入る場合は、例えば「cal_info」のようにアンダースコアで区切るなどのルールです。なおA〜Zで構成されている関数において大文字小文字の区別はされませんが、基本的には可読性の観点からも統一した表記で呼び出すことを推奨されています。

その他関数の仕様

プログラミング言語によって仕様が異なる部分ですが、PHPの場合は必ずしも関数を参照前に定義する必要がありません。しかしある条件を満たした場合にのみ関数が成り立つような場合には、関数が先に定義されていなければいけないという例外はあります。またPHPの関数は再起的な呼び出しが可能ではありますが、100以上の無限に繰り返されるような再起処理は異常終了してしまう可能性があるので、PHPの公式マニュアルでは避けるよう注意書きがありました。さらにPHPの関数はその有効範囲(スコープ)の自由度が高く、関数内部で定義されたとしても、関数外から参照が可能なグローバルスコープとなっています。

まとめ

PHPにもともと備わっている組み込み関数自体の種類が豊富なので、それらを利用するだけでも様々なシステムの開発が可能です。それでも開発プロジェクトの要件パターンは無数にあり、可能な限り要件に沿ったシステムを作り上げるには既存の関数だけでは物足りず、柔軟に各関数のいいとこ取りをしたり、独自な機能を付け加えたりしたオリジナルなユーザー定義関数を作成する必要も出てきます。この記事をきっかけにfunctionを使いこなせるようになって、社内で唯一無二のPHPプログラマーの道を歩んでみてはいかがでしょうか。