【PHP】PHP入門・基本のきほんに引き続き、PHP初心者の方向けにPHPのことを解説します。
前回はとりあえずPHPファイルを作ってみよう、というところの話だったのですが、今回は座学的にPHPを見て行ってみようと思います。
前回の続きというよりは、合わせて読んでいただけたら…という内容になっています。

前提

  • htmlを作ったことがある人向けに書いています。

PHPとは

プログラム言語は、JavaやC・C#、Ruby、Pythonなど色んな種類があります。
何をしたいかによってどの言語を選んだらいいかは変わってくると思いますが、WEBで手軽に何かしたいな~という初心者の方にはPHPがおすすめです。

  • 正式名称は、PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)
  • PHPは、「Personal Home Page」の略。
  • 動的なウェブページを実現することを主な目的としたプログラミング言語。
  • Webサーバ上で動作する、サーバサイド・スクリプト。
  • 平易な文法で初心者でも扱いやすい。

WEBで何か、という意味ではJavaScriptもおすすめですが、PHPがサーバーサイド・スクリプトなのに対してJavaScriptはクライアントサイド・スクリプトなので、できることが大きく違います。(プログラムがサーバーで動くのかクライアントで動くのか、というところはけっこう大事なことなのです!)

PHPでデータベースと連携したウェブページを作って、スライドショーやマウスに反応したアニメーションなどはJavaScriptを使う・・・。という感じで、この二つは併用することになるでしょう。

PHPとhtmlの関係

PHPはhtmlに取って替わるようなものかと思いがちですが、そうではありません。PHPは、htmlを作ります。

例えば、レシピサイトを作りたいと思ったときのことを考えてみましょう。
レシピサイトのトップページがあって、「お肉のレシピ一覧」の下に「ハンバーグのレシピ」があります。お肉のレシピには、「ステーキのレシピ」や「チキンソテーのレシピ」もあれば、「ピーマンの肉詰め」のレシピもあるんでしょうね。

htmlだけでこのサイトを作る場合、代表で「ハンバーグのレシピ」を一つ作って「ステーキのレシピ」と「チキンソテーのレシピ」はそれを複製して作ったらよさそうです。

これが手におえる数ならいいのですが、お肉のレシピは50個もあって、さらにお魚のレシピや野菜のレシピもあってそれぞれ山ほどレシピがあったら大変そうですよね。複製して作るのはまあ何とかなったとして、途中でヘッダーとフッターのナビゲーションを変更したくなったら、htmlだと全ページ一個一個対応するしかありません。

PHPを使うと、ヘッダーとフッターは別のファイルに切り分けて、すべてのレシピがそのヘッダー・フッターを読み込むようにしたり、データベースを用意して、レシピページのひな形をつくって動的にレシピhtmlを生成する…とかそういうことができます。

他にも、検索システムや会員登録なども作れます。有名なCMS・WordPressもPHPで作られています。

「動的にhtmlを作る」ことの具体例

「動的に」って言われてもなかなかぴんとこない方も多いと思いますので、実例をあげて見てみましょう。
文法的なことは【PHP】PHP入門・基本のきほんをチラッと見てもらったほうがいいのですが、ここではプログラムの雰囲気だけわかったらいいかなと思います。

例えばhtmlで次のようなリストを作る場合。

// index.html
<ul>
<li class="recipe1">レシピ1</li>
<li class="recipe2">レシピ2</li>
<li class="recipe3">レシピ3</li>
<li class="recipe4">レシピ4</li>
<li class="recipe5">レシピ5</li>
<li class="recipe6">レシピ6</li>
<li class="recipe7">レシピ7</li>
<li class="recipe8">レシピ8</li>
<li class="recipe9">レシピ9</li>
<li class="recipe10">レシピ10</li>
</ul>

レシピ番号と、クラス名の番号が対応していて、連番になっています。htmlだと、一行コピーしてクラス名とレシピの番号を手作業で書き換える、というような感じになりますね。

これをPHPで書くと、こんな感じになります。

// index.php
<ul>
<?php for($i=1,$max=10; $i<$max+1; $i++) {
  echo '<li class="recipe'.$i.'">レシピ'.$i.'</li>'."\n";
} ?>
</ul>

このサンプルでは10個ですが、100個になっても「$max=10」を「$max=100」に変えるだけで100個の<li>が生成されるわけです。
「$i」が、1から$max+1の間、1ずつ加算されるというループになっています。

通常なら、「レシピ1」なんて内容ではなくて、データベースから取得したレシピ名などが入るんでしょうが、こういったループによる処理はよく使います。

こんなところで、今回はおわりです。
プログラムは習うより慣れろというところがありますので、興味がでたら実際に作ってみてくださいね。