PHP

【PHP入門】PHPの概要とPHPでできること

PHPは、Webサーバーで動作するプログラミング言語です。

何かWebサービスを作ってみたい、Webエンジニアを目指したい、となったとき、まず初めに耳にする言語ではないでしょうか。

Webのプログラミング言語は、他にもJavaやRubyなど色々な選択肢がありますが、PHPは特に初心者にオススメな言語です。
その理由は、他の言語に比べて簡単で手軽に始められるからです。

この記事では、これからPHPを学んでみたいという初心者向けに、PHPの概要と、PHPでどんなことができるのか、という内容を解説してきたいと思います。
また、具体的にどんなソースコードを書くのかというサンプルコードも、少しだけお見せします。

ちなみにこれを書いている筆者は、エンジニア歴10年、PHP歴は8年くらいです。
ほぼ独学でやってきましたが、何とか続けられてきました。自作フレームワークを作って、社内向けに講義をした経験なんかもあります。

ただこういった文書はまだあまり書きなれていないので、わかりにくい点や言葉が足りない点もあるかもしれません。そのあたりは今後も書き続けることで、改善していければと思います。

PHPの概要

PHPの説明に入る前に、まずはサーバーとクライアントという概念を知っておく必要があります。
これは特に難しいことはありません。以下の図を見てください。

私たちが普段見ているWebサイトは、インターネットを通じてサーバーからデータを取得しています。クライアントというのは、それを閲覧するためのPCやスマートフォンのことで、より正確に言うと、いわゆるWebサイトを閲覧するためのブラウザがクライアントです。

なぜこのような説明をしたかというと、一言にWebのプログラミング言語といっても、サーバーで使用する言語クライアントで使用する言語がそれぞれあるからです。

PHPは、サーバーで使用するプログラミング言語になります。
クライアントで使用する言語というのは、HTML/CSS/Javascriptなどです。

ここではPHPについてしか触れませんが、Webのサービスを開発したいのであれば、HTML/CSS/Javascriptの知識も多少は必要になってきます。

PHPが実行される仕組み

では次に、実際にWebサイトにアクセスしたとき、どのような流れでPHPが実行されるのかというのを、簡単に説明します。

Webサイトを閲覧するには、必ず「URL」でWebサーバーにアクセスしますね。
Webサーバーは「URL」のリクエストに対して「HTML」という形式で応答を返します。私たちが見ているのは、その「HTML」をブラウザが解析して、人間の見やすい形に整形したものになります。

では、どのタイミングでPHPが実行されるのかというと、WebサーバーがURLのリクエストを受けて、HTMLを返すまでの間です。
Webサーバーは、そのURLがPHPを実行するためのリクエストかどうかを判断し、必要に応じてPHPを実行します。分かりやすいものだと、URLの中に「.php」という拡張子が付いていれば、それはPHPを実行するためのリクエストになります。
(サーバー側の設定によって、.phpが付いていないURLでも、PHPを実行することはできます。)

ただ上にも書いたように、Webサーバーが返す応答は「HTML」ですから、PHPは最終的には「HTML」を出力することになります。

ちょっと補足です。

PHPはHTMLを出力すると書きましたが、HTML以外を出力する使い方をすることもあります。
この記事では、単純に「Webサイトを表示する」上でのPHPの動作について書いていますが、PHPの役割はそれだけではありません。

もちろんHTML以外のものを出力することもありますし、クライアントを介さずにサーバー上だけで使うこともあります。

PHPでできること

では、Webサイト上で具体的にPHPがどんな使われ方をしているのかというのを、いくつか具体例を挙げてみようと思います。

HTMLの加工

まずは、条件分岐や繰り返し処理によるHTMLの加工です。

条件に応じて出力内容を変える

例えば、日本語と英語のどちらにも対応しているサイトなどは、アクセス元の国によって言語が自動的に切り替わったりしますよね。
PHPでアクセス元のIPアドレスによって国を判定し、出力内容を変えるというようなことができます。

繰り返し処理で同じような内容を出力する

例えば、ECサイトの商品一覧のページなどは、同じようなフォーマットで商品名や商品画像が数十件、数百件と並んでいると思います。これを1つ1つ手動で書いていては、メンテナンスがとても大変です。
しかしPHPで商品の出力を繰り返し行う処理を書けば、数行の記述で済みます。

ユーザーが入力した内容を取得

よくあるのは、ログインフォームやお問い合わせフォームなどですね。

ログインフォームであれば、ユーザーが入力したID、パスワードが正当であるかどうかをPHPで処理し、間違っていればエラー出力、合っていればログイン処理を行います。

お問い合わせフォームであれば、ユーザーが入力したお問い合わせ内容などをPHPで取得し、サーバーに保存したり、管理者にメールで通知したりを行います。

データベースと連携

データベースとは、その名の通り、データを保存しておく場所です。

例えば当ブログのような一般的なブログサイトでもデータベースを利用しており、記事の情報などはすべてデータベースに保管されています。
あなたが今見ているこの記事も、PHPがデータベースから取得して表示している情報ですね。

また、先ほどのログインフォームの例で言うと、ID、パスワードが正当であるかどうかという処理は、具体的にはデータベースに登録されている情報との照会を行っています。

PHPの書き方

次に、PHPでは具体的にどんなソースコードを書くのか、少しだけお見せします。

基本

まず前提として、ソースコードをPHPとして実行するためのルールは以下の2つだけです。

  • 拡張子を「.php」とする
  • <?php と ?>で囲う

PHPはHTMLの中に埋め込むことができるので、<?php ~ ?>というのが、HTMLのタグのような役割を果たします。

具体的には、以下のようなソースになります。

<!DOCTYPE HTML>
<html>
    <head>
        <title>PHPサンプル</title>
    </head>
    <body>

        <?php
            echo "PHPを実行するぜ!";
        ?>

     </body>
</html>

echo ~という部分が、PHPのコードですね。echoは文字列を出力するための命令です。
それ以外の部分はHTMLのコードになります。

まあこれがPHP本来の書き方ではあるのですが、大規模なシステムになってくるとこのような書き方はしないことも多いです。

PHPのロジック部分とHTMLのデザイン部分を分離するという考え方があって、いわゆる「テンプレートエンジン」と呼ばれるライブラリを使ったりします。

また、PHPだけを切り離して記述した場合、閉じタグの「?>」は逆に書かない方がいいことが多いです。

このあたりはいずれ別の記事で別途解説しようと思います。

PHPの構文

ここでは簡単に、以下の基本的な構文のサンプルコードだけ載せておきます。どんな書き方をするのか、なんとなくイメージだけ知ってもらえればと思います。

  • 変数と定数
  • 関数
  • 条件分岐(if, switch)
  • ループ処理(for, foreach, do, while)
<?php

/************************
  変数と定数
*************************/

// 変数
$var = "これが変数";

// 定数
define("CONST_VALUE", "これが定数");

/************************
  関数
*************************/

// 関数の利用
test_func();

// 関数の定義
function test_func(){
  echo "これが関数";
}

/************************
  条件分岐
*************************/

// if文
if($a){
  echo "aが正";
}else{
  echo "aが否";
}

// switch文
switch($b){
  case 1:
    echo "bが1";
    break;
  case 2:
    echo "bが2";
    break;
  default:
    echo "bがそれ以外";
    break;
}

/************************
  繰り返し
*************************/

// for文
for($i=1; $i<=10; $i++){
  echo "繰り返し".$i."回目";
}

// foreach文
$ary = array(1 => "a", 2 => "b", 3 => "c");
foreach($ary as $key => $val){
  echo "配列のキー:".$key.", 配列の値:".$val;
}

// do文
$i = 0;
do{
  echo $i."が10以下の間繰り返し";
  $i++;
} while($i <= 10);

// while文
$i = 0;
while($i <= 10){
  echo $i."が10以下の間繰り返し";
  $i++;
}

さいごに

PHPは比較的簡単な言語であり、初心者でも習得しやすい言語と言われています。

しかし、簡単で直感的に書ける反面、ある程度のあいまいさを許容してしまうという特徴があるため、その特徴を正しく理解していなければ、バグを生み出しやすい言語でもあります。

このブログでは、今後もいくつかPHPの入門記事を書いていこうと思いますが、そういったバグを生みやすい点であったり、初心者が躓きやすい点なんかを、実際の経験をもとに書いていけたらなと思っています。