ユーザーで定義する関数とは?

 PHPには数多の関数が備わっています。しかし、関数はなにも PHPが最初から提供しているものばかりではありません。必要に応じて、自分自身で関数を定義することも可能です。ユーザー自身で定義した関数のことを「ユーザー定義関数」と呼びます。例えば、HTMLエンコードすべきところが沢山ある場合、そのすべてにおいて htmlspecialchars関数を呼び出していたら、あまりにも効率が悪いと思います。呼び出す箇所がほんの数カ所であればまだ我慢できるかもしれません。しかし、もしもこれが何十か所、何百か所にも及んだり、あるいは、それぞれで必要な処理が何十行にも及んでいたら、これはとんでもない労力が必要だといえるでしょう。

 それでもまだ、コーディングをするときに必死になればいいのだというガッツのある人もいるかもしれません。しかし、もしも後で、そんな繰り返し部分に修正、あるいは、間違いが見つかったらどうでしょう。 分散した繰り返しのコードは、誰かがすべて修正しなければならないのです。それは実に骨の折れる作業だと言えます。

 そんな労力を助けてくれるのが、ユーザー定義関数です。ア プリケーションで繰り返し利用する機能は、ユー ザ一定義関数として用意しておくことで、コードをより最適化できます。このようにして定義されたユーザー定義関数は、「関数名(引数,…);」という形式で呼 び出すことも可能です。

戻り値

戻り値とは、関数の結果のことです。ユーザー定義関数が戻り値を持つ場合には、return命令を使って呼び出し元に返します。return命令で関数の処理は終了し、それより後ろの命令は処理されませんので、注意してください。

例えば右のtriangle.phpは、与えられた底辺($base) と高さ($height) をもとに、三角形の面積を求めるtriangle関数の例です。実行してみると、return命令の後ろに書かれたマーカーの部分は実行されて「いない」ことが確認で
きます。

return命令を省略することもできます。その場合、ユーザー定義関数はなにも返しません。ただ、決め5れた処理を
実行するだけです。

Encode.phpのe関数を改良し、与えうれた文字列を工スケープしたあと、そのまま出力するようにしたものです。関数の中で出力までしていますので、呼び出し元でprint命令を呼び出していない点にも注目してください。

JDK(Java Development Kit)

PHPの開発を行うのにJavaは特に不要なのですが、Eclipseという開発環境の一部にJavaを利用しているため、Javaを実行するための環境が必要となります。

Javaを使うためのソフトウェアには2つあります。lつは、Javaのプログラムを実行するJRE(Java Runtime Environment)で、もうlつは、Javaのプログラムを開発するJDK(Java Development Kit)です。

基本的に、PHPの開発をするだけであれば、Eclipseを実行するのに必要な胞だけが用意しであれば十分です。どちらも専用のインストーラを使ってインストールするだけですので、それほど難しくはありませんから、もちろんJDKをインストールしでもかまいません。

JREは、Webサイトなとごで、Javaのプログラム(アプレットと呼ばれます)を実行するのに必要となるため、既に多くのユーザーのOSに組み込まれていることと思います。Eclipseは、JREの「5.0」というバージョン以降のものであれば問題なく動きます。既にこのパージョンのJREがインストールされているなら、別途インストールする必要はありません。以後のインストール作業は、まだJREがインストールされていなし、(あるいは、5.0より古いパージョンのものが入っている)場合にのみ行ってください。

 

 

while文の使い方

while文を使うと、このような繰り返し処理を組み立てることができます。繰り返す処理を{ }に記述し、ループを抜けるためのコドを()に記述する点は、for文と同じです。ただし、while文の( )ではループカウンタが使えません。では、どのようなタイミングでループを終了するのでしょうか。while文は、簡単に言えば「問題がなければループを続ける」という構文です。

while文によるループ処理

「問題がなければ」についてもう少し説明します。プログラミング用語を使って説明すると、while文は、( )がtrueの間は処理を続けるという構文です。(   )がfalseになった時点でルプを終了します。簡単に言えば、(  )に「ルプを続けていいですか?」と書かれていて、その答え(「はい」または「いいえ」)に応じてループを続けるか終了するかが決定するのです。

while文の構造

while (ここがtrueの聞はループを続ける)  {

}

急に「trueの聞は処理を続ける」という表現が出てきたので、while文のループが終了するタイミングが、今ひとつピンとこないかもしれません。月末日を過ぎたらwhile文を抜ける例でイメージすると、( )に次のような条件を記述して、うまくループを抜けるように処理を書きます。

月末日まで表示して終了するwhile文のイメージ

ループ開始時点はtrueだった「あるもの」が、途中でfalseになったのでwhile文を抜けるという動作です。ところで、なぜ、「過ぎていますか?」ではなく「過ぎていませんよね?」のようなまわりくどい質問にするのかは、後でわかるので気にしないでください。ここでは、質問の答えが「いいえ」(false)になった時点でwhile文を抜けるということだけを意識して、先に進みましょう。

 

1回だけ書いてコピーするという発想

面倒な作業はl回で済ませるという発想がプログラミング上達のコツです。あいさつの例でも、l回だけ「こんにちは!」と書いておき、それをコピーして使うことができれば、何度も使いたいときに便利です。

1枚だけ手書きしてコピーして使う

こうすれば、手書きという面倒な作業は1回だけで済みます。「こんにちは!」が「こんばんは!」になっても、直すのは手書きの1枚だけです。何枚も手書きのあいさつを修正するのに比べれば、作業が楽なことがわかるでしょう。

このような仕組みがあれば便利

  • 紙に「こんにちは!Jと書く
  • その紙をコピーする
  • その紙をコピーする
  • その紙をコピーする

さて、この「こんにちは!」と書いた紙をコピーするときに、どこにその紙があるのかわかるように、箱に入れておいた方が良いでしょう。あいさつを書いた紙も箱に入れておきましょう。箱に入れたあいさつをコピーして使うイメージは次のようになります。

コピーして使うあいさつを箱に入れる

「こんにちは!」と書いた紙を箱に入れる

箱に入った紙をコピーする

箱に入った紙をコピーする

箱に入った紙をコピーする

“箱”のような仕組みを使えば、あちこちで何度も同じ言葉を使う処理が効率的に記述できることはイメージできたでしょうか。

文字列中の HTMLのタグを無効化する

掲示板などでは、フォームで入力された文字列を、 Web ブラウザに表示します。 ただし、その文字列の中に HTMLのタグが含まれていると、好ましくないことが起 こる場合があります。 たとえば、アダルト画像を表示する<IMG> タグを入れられた場合、それが掲示板に表示されると、掲示板のイメージが悪化するということが考えられます。このようなことから、掲示板ではHTMLのタグを使用できなくすることがよくあります。 そのためには、文字列中のHTMLのタグを無効化する必要があります。 その処理を行う関数として、 htmlspecialcharsがあります。書き方は次の通り です。 htmlspecialchars (対象の文字抑) この関数は、次の処理を行って、 HTMLのタグが動作しないようにします。置換 後の文字列が値として返され、元の文字列は変化しません。

1つの HTML ファイルに PHP の部分を複数入れる

1つの HTML ファイルの中には PHP の部分 (<?php ~?>の部分)が1 つしかありませんでした。しかし、 PHP の部分を複数箇所入れることも可能です。たとえば、「ページのほとんどは固定の内容で、数箇所だけ PHPを使用して動的に内容を変化させたいというような場合、それぞれの部分に <?php ~?>のタグを入れて処理を書けばOK です。

PHPスクリプ卜の作成と実行の基礎

PHPスクリプ卜の作成と実行の基礎は下記のチェックで確認しましょう。プログラミンクがはじめての人は、 覚えることが沢山です。プログラミングには、こんなに規則があるのかと。PHPの記述の規則は、決して厳密ではありません。他の言語に比べれば、規則に慣れるまで の時間は少なくて済むはずです。1つでもプログラム言語を学んでおけば、他の言語にも 応用できます。頑張りまし ょう。

  •  PHPスクリプトを記述するときの規則を理解している
  •  関数の意昧を理解し、また利用することができる
  • PHPスクリ プ トでの文字列の記述方法を理解している
  • 文字列を結合することができる
  • define で定数を定義することができる

プログラミング用語集

PHP入門者の方がつまづきがちポイントとして、プログラミングには専門用語が多い!ということがあるかと思います。PHP入門者のうちは、自分用の備忘録をつくり、わからなくなったら見返すという習慣をつけるとよいでしょう。ここにも、よく使われる用語の一部をあげておきます。

・スクリプト…プログラム言語の一種であり、PHPはスクリプトになります。入門者であるうちは、プログラムは大規模なもの、スクリプトは規模が小さい代わりに扱いやすいというくらいのイメージでよいかと思います。

・変数…プログラムの中で、ある値や内容を、一時的に保管したいということがよくあります。そんなとき、一時的にそれを記憶させておけるものが変数です。たとえば、「int a」と書くと、そこにint型の箱ができます。「int a=5」とすれば、その箱に5という値を保管したことになります。この保管することを「代入」と呼ぶので一緒に覚えておくとよいでしょう。

・関数(ファンクション)…「画面に文字を表示する」「ファイルを保存する」などの処理内容の記述を、関数、またはファンクションといいます。

・引数…たとえば「画面に文字を表示する」という関数だった場合、「なんという文字を表示するか」の部分が引数に当たります。PHPでは、関数の後の()の中に記述します。

・戻り値…関数によって得られる結果のことを、戻り値といいます。

if 文の基本型

一連の処理の中では、条件が成立するかどうかによって、その後の処理を変える こともよくあります。このようなことを行うにはif やswitchという文を使用します。まず、条件が1つだけの基本的な if 文から説明しましょう。条件の部分には、条件を判断するための式を入れます。条件式では 2つの値を比較します。なお、比較に使用する記号のことを比較演 算子と呼ぴます。