PHPの基礎

PHPは、静的な HTMLページにプログラムを埋め込み、動的な Webページを作成するのために開発さ
れたプログラミング言語です。PHPの書き方のルールや特徴、そして構文をしっかり理解しましょう。

そもそも PHP は、静的な HTML ぺージにプログラムを埋め込み、動的な Webページを生成するために開発された プログラミング言語です。つまり 、他のプログラム言語と違い、HTML ソース内に直接記述することができます。PHP の書 き方のルールとして、まずPHP スクリプ卜は 「<?php」 と 「?>」 で囲みます。また、PHP 処理文の録後は「セミコロン(;)」で終わります。そして、ファイルの上から下に処濯が実行され、ファイルの儀後に到達するとプログラムが終了する仕組みとなっています。

なお 、PHP には「exit;」という処理を終了させる構文があります。この構文を実行すると、その場でプログラムカず終了し、それ以降の PHP スクリプ卜や HTML の出力は行われません。
また、HTML 部分は通常の HTML として Webブラウザに出力されますが、「<?php」 と 「?>」で囲まれた部分では、動的な値を生成して print 構文を使って HTML へ出力します。さらに、ファイルの拡張子は 「.php」でなくてはなりません。

実際にPHPを使ってWebアプリケーションを作成し実行する

まずここではお持ちのパソコンがWindowsでWindowsパソコンで今後もWindowsパソコンと
して使用しながら、Widowsパソコン上ににVM(仮想OS)をインストールした後にLinuxをVM
(仮想OS)上にインストールする方法を紹介します。

ここではVirtual Boxを紹介します。ダウンロードして使用可能です。
Virtual Boxのダウンロードは検索でVirtual Boxと入力しますとダウンロードの
リンクが左上にありますので、ページの説明(日本語)を読んでダウンロードしてください。

次にVirtual Boxをインストールする方法を紹介します。

Windows版、OS X版はそれぞれインストーラーが付いています。ダウンロードしたファイルを実行して、
Virtual Boxをインストールしてください。

次に、Linuxインストール用のファイルを入手しましょう。Linux公式サイトで、インストール用の
ISOイメージファイルというものが配布されいますので、まずはISOファイルのダウンロードを行って
ください。あまり古いバージョンのLinuxですと、インストールがかえって大がかりになってしまうので
新しいバージョンのLinuxのISOファイルを入手してください。目安としてはCENT OS 7以降が
インストールが楽です。
(CENT OSの他には公開されていて配布可能なLinuxもありますが、ここではCENT OSにして
います。)
CENT OS

CENT OS 7は、DVD ISO、Everything ISO、Minimal ISOの3種類のISOイメージファイルが配布されています。
通常は「DVD ISO」を使うとよいです。

Virtual BoxのインストールとISOイメージのダウンロードができたら、インストールを開始しましょう。
まずは、Virtual BoxでこれからLinuxをインストールする“仮想マシン”を作成します。

Virtual Boxを起動後、画面左上にある「新規」をクリックします。
「新規」をクリックすると「仮想マシンの作成」画面が開きます。
この画面で、まず「名前(任意の名前でOK)」を付け、これからインストールしたいOSの「タイプ」と
「バージョン」を選択します。CENT OSの場合、「タイプ」は「Linux」、「バージョン」は
「Red Hat(64-bit)」を選択します。

次に「メモリーサイズ」を選択してください。仮想マシンでどれだけメモリを使えるか、ということになるので、
大きくすれば仮想マシンの処理スピードが上がりますが、その分、本体側(ホストOS)の処理が遅くなる場合が
あります。

Linuxのデスクトップ環境は1024MBもあれば動きますが、2048MB以上のメモリがあえるパソコンでしたら、
2048MBぐらいにしておけばより快適に使用可能となります。

「ハードディスク」では、仮想マシン用のハードディスクを作るかどうかを設定します。これからLinuxを
インストールしたいので、「仮想ハードディスクを作成する」を選択してください。

ここまでの設定が完了したら、「作成」をクリックしてください。

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

 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 で定数を定義することができる