基本

PHPで実現できることについて解説

PHPはWeb開発に広く使われている言語です。

動的ページ作成やデータベース操作、API構築など、多彩な機能を持っています。

この記事では、PHPが実現できるさまざまな処理を実例とともに紹介します。

PHPの基本機能

サーバーサイド処理と動的コンテンツ生成

PHPはサーバー上でスクリプトを実行し、動的に生成された結果をブラウザへ返すことができます。

たとえば、アクセス時に現在時刻を表示する処理を作成する場合、下記のようなコードで実装できます。

<?php
  // 現在時刻を取得して表示するサンプルコード
  $currentTime = date("Y-m-d H:i:s");
  echo "<p>現在の時刻は " . $currentTime . " です。</p>";
?>
<p>現在の時刻は 2023-10-05 12:34:56 です。</p>

HTMLとの統合

PHPはHTML内に埋め込む形で利用できるため、静的なデザインと動的なデータを組み合わせたWebページを作成できます。

以下は、HTMLとPHPを組み合わせた実例です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>PHPとHTMLの統合サンプル</title>
</head>
<body>
  <h1>ようこそ!</h1>
  <p>本日は <?php echo date("Y年m月d日"); ?> です。</p>
</body>
</html>

データベース連携

MySQLを活用した操作

SQL操作の基本

PHPからMySQLデータベースへ接続し、基本的なSQL操作を行う方法です。

下記サンプルは、データベースに接続してテーブルからレコードを取得する例です。

<?php
  // MySQLデータベースへの接続設定
  $host = "localhost";
  $user = "dbuser";
  $password = "dbpassword";
  $dbname = "sampledb";
  // 接続作成
  $conn = mysqli_connect($host, $user, $password, $dbname);
  // 接続確認
  if (!$conn) {
    die("接続失敗: " . mysqli_connect_error());
  }
  // SQLクエリを作成
  $sql = "SELECT id, name FROM users";
  $result = mysqli_query($conn, $sql);
  // 結果表示
  if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
      echo "ID: " . $row["id"] . " - 名前: " . $row["name"] . "<br>";
    }
  } else {
    echo "結果なし";
  }
  // 接続を閉じる
  mysqli_close($conn);
?>
ID: 1 - 名前: 太郎<br>ID: 2 - 名前: 花子<br>

PDOによる安全な接続

PDOを使用することで、より安全で柔軟なデータベース操作が可能になります。

以下は、プリペアドステートメントを利用したサンプルコードです。

<?php
  // PDOによる接続設定
  $dsn = "mysql:host=localhost;dbname=sampledb;charset=utf8";
  $user = "dbuser";
  $password = "dbpassword";
  try {
    // PDOオブジェクト作成
    $pdo = new PDO($dsn, $user, $password);
    // エラー発生時に例外を投げる設定
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // SQLクエリとプリペアドステートメント
    $stmt = $pdo->prepare("SELECT id, name FROM users WHERE id = :id");
    $stmt->bindValue(':id', 1, PDO::PARAM_INT);
    $stmt->execute();
    // 結果を取得して表示
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($row) {
      echo "ID: " . $row["id"] . " - 名前: " . $row["name"];
    } else {
      echo "結果なし";
    }
  } catch (PDOException $e) {
    echo "エラー発生: " . $e->getMessage();
  }
?>
ID: 1 - 名前: 太郎

Webアプリケーション構築

セッション管理とユーザー認証

セッションを利用することで、一度のアクセス間でユーザー情報を保持できます。

下記サンプルでは、簡単なログイン状態の管理を実装しています。

<?php
  // セッション開始
  session_start();
  // ユーザー認証のサンプル(実際の用途ではパスワードのハッシュ化等が必要です)
  $username = "demoUser";
  $password = "demoPass";
  if (isset($_POST['username']) && isset($_POST['password'])) {
    if ($_POST['username'] === $username && $_POST['password'] === $password) {
      $_SESSION['loggedin'] = true;
      echo "ログイン成功";
    } else {
      echo "ユーザー名またはパスワードが正しくありません";
    }
  }
?>
<form method="post">
  ユーザー名: <input type="text" name="username"><br>
  パスワード: <input type="password" name="password"><br>
  <input type="submit" value="ログイン">
</form>
<!-- フォームが表示され、正しい認証情報で送信すると「ログイン成功」と表示されます -->

フォームデータの受け取りと検証

フォームから送信されたデータは、$_GET$_POSTで受け取ります。

以下は入力内容の検証を行い、値を表示する例です。

<?php
  if ($_SERVER["REQUEST_METHOD"] === "POST") {
    // 入力の検証(必須項目チェック)
    $name = trim($_POST["name"]);
    if (empty($name)) {
      echo "名前を入力してください。";
    } else {
      // 入力値の表示
      echo "入力された名前: " . htmlspecialchars($name, ENT_QUOTES, "UTF-8");
    }
  }
?>
<form method="post">
  名前: <input type="text" name="name"><br>
  <input type="submit" value="送信">
</form>
<!-- フォームに名前が入力され送信されると、入力内容を安全に表示します -->

API開発

REST APIの実装方法

REST APIは、HTTPプロトコルを利用してクライアントとサーバー間でデータをやりとりする設計手法です。

以下は、HTTPヘッダーを設定してJSON形式のレスポンスを返すサンプルコードです。

<?php
  // JSONレスポンスを返すためのヘッダー設定
  header("Content-Type: application/json; charset=UTF-8");
  // サンプルデータの作成
  $data = [
    "status" => "success",
    "message" => "APIリクエストに成功しました",
    "data" => ["id" => 1, "name" => "Sample User"]
  ];
  // JSON形式で出力
  echo json_encode($data);
?>
{"status":"success","message":"APIリクエストに成功しました","data":{"id":1,"name":"Sample User"}}

JSONデータの操作

PHPでは、json_encodejson_decodeを利用してJSONデータの生成や解析が可能です。

下記は、JSON文字列から配列に変換する例です。

<?php
  // JSON文字列のサンプル
  $jsonString = '{"id":10,"name":"PHP Developer"}';
  // JSON文字列を配列に変換
  $dataArray = json_decode($jsonString, true);
  // 配列の値を表示
  echo "ID: " . $dataArray["id"] . "<br>";
  echo "名前: " . $dataArray["name"];
?>
ID: 10<br>名前: PHP Developer

ファイル処理とエラーハンドリング

ファイルの読み書き

PHPでは、ファイルを開いて読み書きする操作が簡単に行えます。

以下は、テキストファイルに書き込み、その後ファイルから読み込む基本的なサンプルコードです。

<?php
  $fileName = "sample.txt";
  $content = "これはサンプルテキストです。";
  // ファイルへの書き込み
  file_put_contents($fileName, $content);
  // ファイルの読み込み
  $readContent = file_get_contents($fileName);
  echo $readContent;
?>
これはサンプルテキストです。

例外処理の手法

エラーハンドリングには、try-catchブロックを利用する方法があります。

下記サンプルは、例外をキャッチしてエラーメッセージを表示する例です。

<?php
  try {
    // 故意に例外を発生させる例
    if (true) {
      throw new Exception("例外が発生しました");
    }
    echo "正常終了";
  } catch (Exception $e) {
    echo "エラー: " . $e->getMessage();
  }
?>
エラー: 例外が発生しました

オブジェクト指向プログラミングの活用

クラスとオブジェクトの利用

PHPでは、クラスを定義してオブジェクト指向プログラミングによる実装が可能です。

以下は、簡単なクラスを定義し、インスタンス化して利用するサンプルコードです。

<?php
  // クラス定義
  class User {
    public $name;
    public $age;
    // コンストラクタで初期値を設定
    public function __construct($name, $age) {
      $this->name = $name;
      $this->age = $age;
    }
    // ユーザー情報を表示するメソッド
    public function displayInfo() {
      echo "名前: " . $this->name . ", 年齢: " . $this->age;
    }
  }
  // オブジェクトの生成と利用
  $userInstance = new User("太郎", 30);
  $userInstance->displayInfo();
?>
名前: 太郎, 年齢: 30

名前空間とオートローダー

複数のクラスを管理する際には、名前空間を利用することで衝突を避けることができます。

下記は、名前空間を定義し、spl_autoload_registerで自動読み込みするサンプルです。

<?php
  // 自動読み込みの設定
  spl_autoload_register(function ($class) {
    // クラス名に基づいてファイルパスを生成(シンプルな例)
    $file = __DIR__ . '/' . str_replace('\\', '/', $class) . '.php';
    if (file_exists($file)) {
      include $file;
    }
  });
  // 名前空間を利用したクラスの利用例
  // src/Library/User.php
  namespace Library;
  class User {
    public function __construct() {
      echo "Library\\User のインスタンスが生成されました。";
    }
  }
  // グローバル名前空間でのクラス利用
  $user = new \Library\User();
?>
Library\User のインスタンスが生成されました。

PHP最新機能とモダン開発

PHP7/8の新機能

PHPの最新バージョンでは、性能向上や新機能が多数導入されています。

たとえば、null合体演算子やスカラー型宣言がその一例です。

以下に、null合体演算子を利用したシンプルな例を示します。

<?php
  // 変数がセットされていない場合、デフォルト値を利用
  $username = $_GET["username"] ?? "ゲスト";
  echo "ようこそ、" . $username . "さん!";
?>
ようこそ、ゲストさん!

型宣言と無名関数の活用

PHP7以降、関数の引数や戻り値に型宣言を行うことができ、コードの明確化やバグの早期発見に役立ちます。

また、無名関数を利用して柔軟なコールバック処理が可能です。

以下は、型宣言と無名関数を併用した例です。

<?php
  // 型宣言を利用した関数
  function sumNumbers(int $a, int $b): int {
    return $a + $b;
  }
  // 無名関数を利用して配列の各値に処理を適用
  $numbers = [1, 2, 3, 4, 5];
  $squared = array_map(function (int $num): int {
    return $num * $num;
  }, $numbers);
  echo "合計: " . sumNumbers(5, 10) . "<br>";
  echo "二乗した配列: " . implode(", ", $squared);
?>
合計: 15<br>二乗した配列: 1, 4, 9, 16, 25

まとめ

この記事では、PHPの基本機能から最新の開発手法まで、具体的なコード例を交えて解説しました。

各機能の実装方法や連携の仕組みについて簡潔に理解できる内容です。

ぜひ、実際にコードを書いて試してみることで、技術の習得に挑戦してみてください。

Back to top button
目次へ