PHP

PHPって何ができるの?

投稿日:2017年9月26日 更新日:

「PHPって何ができるか?」を知るために、最小限の PHP を使った Webページが Webブラウザにどんなデータを返すのか? を見ていきます。

スポンサードリンク

1. この記事が前提としている知識

  • HTML
  • うっすらとしたPHP の知識

2. HTML ファイルの場合(PHP を使わない場合)

Webサーバー上に、以下のHTMLファイル(拡張子が .html)を用意します。

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Hello</title>
</head>

<body>

  <p>Hello</p>

</body>
</html>

Webブラウザから Webサーバーに対してこの HTML ファイルを要求すると、以下の HTML データが返ってきます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Hello</title>
</head>

<body>

  <p>Hello</p>

</body>
</html>

Webサーバーは、要求されたファイルが HTML ファイルであれば、そのファイルの内容をデータとしてそのまま返してくれるのです。それを受け取った Webブラウザは、この HTML を解釈して画面に表示します。

以上、至って普通ですが、Webブラウザと Webサーバーのやりとりは、これが基本となります。

3. PHP ファイルなのに、PHP タグを全く使わない場合

次に、Webサーバー上に 以下の PHP ファイルを用意します。
(この Webサーバーは PHP が使えるように設定してあるとします)

index.php

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Hello</title>
</head>

<body>

  <p>Hello</p>

</body>
</html>

PHP の記述は一切なく、HTML を記述しただけの内容になっています。先ほどの HTML ファイルと全く同じ内容です。

PHP ファイル(ファイル拡張子が .php)にしたことで、Webサーバーは PHP の実行エンジンにこのファイルの処理を任せます(先ほどのように、該当するファイルをそのまま返してくれません)。 しかし、上記のファイルには PHP の記述はありません。 この場合、Webサーバーはどのようなデータを Webブラウザに返すのでしょうか?

では、Webブラウザを使い Webサーバーに対してこのPHPファイルを要求してみましょう。 すると、以下の HTML データが返ってきます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Hello</title>
</head>

<body>

  <p>Hello</p>

</body>
</html>

これは、PHP ファイルに記述した HTML そのままです。

つまり、PHP ファイルというのは、PHP タグ (<?php ... ?>) がなければ、HTML ファイルと同じように扱えるのです。

PHP のこの特徴により、「PHP は Web に特化したプログラミング言語である」と言われることがあります(実際には、Web 以外にも使えます)。

4. PHP タグを使って “Hello” と出力した場合

今度は逆に、HTML は一切記述せず、PHP の処理のみを記述してみましょう。

PHP の echo を使って ‘Hello’ という文字列を出力するだけのPHPファイルを用意します。

index.php

<?php
echo 'Hello';

Webブラウザが、Webサーバーに対してこの PHP ファイルを要求した場合、Webサーバーは以下の
HTML データを返します。

Hello

ご覧の通り、PHP で出力した文字列のみとなっています。その他には何も追加されていません。

実は Webサーバーから返ってきたデータの中の「レスポンスヘッダ」という部分を見ると分かるのですが、この返却された文字列は HTMLデータとして 返されています1。 であるのに、DOCTYPE 2 などの記述がないこのデータは HTML としては問題ありです。

こうならないように、PHP を使う場合は、以下のどちらかの方法で HTML として成り立つデータを生成する必要があります。

  1. PHP ファイル内に HTML を直書きする(PHP タグの外に書くこと)
  2. PHP で HTML の記述も出力する(echoprint 等を使う)

これは、どちらでも構いません。その時の PHP プログラムの書き方にフィットする方でよいでしょう。

注釈

1: Content-Type レスポンスヘッダに、text/html がセットされています。
2: HTML Standard – 12.1.1 The DOCTYPE

5. HTML 直書き + PHP タグを使って文字列を出力する場合

最後に、HTML の記述を直書きした上で、PHP による処理も記述してみましょう。

Webサーバー上に、以下の PHP ファイルを用意します。

index.php

<?php
$greeting = 'Hello';
$today = date('Y:m:d');
?>
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Test</title>
</head>

<body>

  <p><?php echo $greeting; ?></p>

  <p><?php echo $today; ?></p>

</body>
</html>

最初のところで、

  • $greeting という変数に、’Hello’ という文字列をセット
  • $today という変数に、date() 関数を使って今日の日付文字列をセット

という処理を行い、<body>タグの中でそれぞれの変数の値を出力しています(<?php ... ?> タグの中で echo を使っています)。

Webブラウザが、Webサーバーに対してこの PHP ファイルを要求すると、以下の HTML データが返ってきます。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Test</title>
</head>

<body>

  <p>Hello</p>

  <p>2017:08:27</p>

</body>
</html>

Webブラウザ上には以下のように表示されます。

これが、基本的な PHP の使い方になります。
HTML ファイルのように HTML が書け、その中に PHP の処理を埋め込めるのです。

※ 今回は 変数にセットされた値は安全な値であることが明らかであるため、HTML 内で出力する際に HTMLエスケープ処理を行っておりません。通常は、セキュリティ対策として HTML エスケープ処理を行います。(参照: PHP: htmlspecialchars – Manual

6. まとめ

PHP を使うと何ができるのかについて簡単にまとめます。

  1. HTML ファイルのように、HTML がそのまま書ける。
  2. Webサーバーから Webブラウザに返すデータの中3に、PHP プログラムで生成した文字列を出力することができる
  3. もちろん、PHP はプログラミング言語なので、データベース上のデータを取得・更新・削除など、他のプログラミング言語でできることはたいていできる。

2 と 3 により、いろいろなところから情報を引っ張ってきて、必要なら加工し、その結果を Webブラウザに返すことができますし、ユーザーが入力した値を受け取ってどこかに格納しておくこともできます。
また 1 の特性により、他のプログラミング言語と比較して、HTML との親和性が非常に高くなっており、Webページが作りやすくなっています。

注釈

3: HTMLの中だけに限らないということです。HTTPヘッダにも出力できます。

7. おまけ

PHP の公式サイトにある「PHPにできることは?」も参照することをお勧めします。

📂-PHP
-, ,

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

PHP

【PHP】Composer の使い方

Composer は、PHPのパッケージ管理ツールです。利用するパッケージ(ライブラリ)間の依存関係も解決してくれます。 スポンサードリンク 目次1. Composer の特徴2. 対応している PH …

Google App Engine

普通のPHPサイトをGAE(php72)上で実現する方法

普通のPHPサイトをGAE(php72)上で実現する方法について説明しています。

Google App Engine

SendGrid でメール送信する(Google App Engine, PHP7)

Google App Engine (runtime: php72) の環境における、SendGrid を使ったメール送信方法について説明しています。

PHP

CentOS 6.8 の PHPを 5.4 から 7 に変更する

PHPのバージョンがいまだに 5.4のままの CentOS 6.8 があったので PHP 7 に更新した;) 環境 この環境では、Nginx + FPM + PHP が動いている。 手順 まずは、関連 …

PHP

pecl install xxxx する際は、php -v と php-config –version が一致しているか確認してから行う

pecl install xxxx する際は、php -v と php-config –version が一致しているか確認してから行うとよいという話しです。