
【6日でできるPHP入門】クラスを使ったサンプル
ここでは クラスを使ったサンプル を題材に、PHP でオブジェクト指向を実践する流れを段階的に体験します。クラスの定義・インスタンス生成・メンバ(プロパティ/メソッド)操作・ファイル分割まで、実行可能なサンプルと実行結果を交えて解説するので、手元の環境ですぐに動かしながら学習できます。

1.サンプルプログラムの概要
1.1. ファイルの構成
以下 2 ファイルで構成します。
ファイル名 | 役割 |
---|---|
printer.php | プリンタクラスの定義(モデル図) |
sample_printer.php | クラスを読み込み、インスタンス操作 |
1.2. サンプル全体の流れ
printer.php
でクラスを定義sample_printer.php
でrequire_once
によりクラスを読み込む- インスタンスを生成し、プロパティを設定
- メソッドを呼び出して動きを確認
2.クラス定義 ― printer.php
ファイル名: printer.php
<?php
// プリンタクラス
class Printer {
// --- プロパティ -----------------
public string $model; // 型番
public int $ppm; // 印刷速度(Pages Per Minute)
// --- コンストラクタ -------------
public function __construct() {
echo "プリンタオブジェクトを生成しました<br>";
}
// --- メソッド -------------------
// 印刷開始
public function startPrint(int $pages): void {
echo "「{$this->model}」が {$pages} ページを "
. "{$this->ppm} ページ/分 で印刷中<br>";
}
// 待機状態へ
public function standby(): void {
echo "「{$this->model}」が待機状態になりました<br>";
}
}
?>
種別 | 名前 | 説明 |
---|---|---|
プロパティ | $model | プリンタの型番 |
プロパティ | $ppm | 1 分あたりの印刷枚数 |
メソッド | __construct() | インスタンス生成時に実行 |
メソッド | startPrint() | 印刷を開始する。 |
メソッド | standby() | 待機状態へ遷移する。 |
「.」の意味
PHPにおける「.
(ドット)」は、文字列の連結演算子(concatenation operator)です。
文字列や変数同士をつなげて一つの文字列にする働きがあります。
プログラムでの使い方
phpコピーする編集するecho "「{$this->model}」が {$pages} ページを "
. "{$this->ppm} ページ/分 で印刷中<br>";
この例の場合
"「{$this->model}」が {$pages} ページを "
これはダブルクォート内で変数展開された文字列です。"{$this->ppm} ページ/分 で印刷中<br>"
こちらも変数展開された別の文字列です。- この2つの文字列を「.」で連結して、1つの長い文字列にしています。
3.インスタンス生成と操作 ― sample_printer.php
ファイル名: sample_printer.php
<?php
// 3-1. クラスの読み込み
require_once 'printer.php';
// 3-2. インスタンス生成
$printer = new Printer(); // コンストラクタ発火
// 3-3. プロパティに値を代入
$printer->model = "EP-123";
$printer->ppm = 20;
// 3-4. メソッド呼び出し
$printer->startPrint(10); // 10ページ印刷
$printer->standby(); // 待機
?>
3.1. 実行結果(Web ブラウザ表示例)
URLに「http://localhost/sample_printer.php」と入力します。

4.コード詳細解説
4.1. コンストラクタと $this
__construct()
はインスタンス生成直後に 1 度だけ実行される特殊メソッド。- クラス内で自分自身を参照する疑似変数
$this
を使い、$this->model
や$this->ppm
へアクセスする。
4.2. アクセス修飾子
修飾子 | アクセス可能範囲 |
---|---|
public | どこからでも利用可 |
protected | クラス自身+子クラスから可 |
private | 定義クラス内部のみ |
本サンプルではすべて public
のため、外部 ($printer->model
) から直接操作できる。
4.3. require_once
でのファイル読込
require_once 'printer.php';
により重複読み込みを防ぎつつクラス定義を取り込む。モジュールを分割することで、クラスを再利用しやすく保守性も向上する。
5.オブジェクト指向のメリット再確認
観点 | 手続き型スクリプト | クラス利用 |
---|---|---|
コード再利用 | 関数や変数を個別に転用 | クラスを丸ごと再利用(複数プロジェクトで) |
保守性 | 関連機能が散在し修正漏れが起きやすい | 状態と振る舞いを一体化し修正箇所が局所化 |
拡張性 | 新機能追加時に既存コードを改変しがち | 継承・ポリモーフィズムで既存コードを温存 |
まとめ
ここでは Printer クラス を例に、
クラス定義→2) インスタンス生成→3) プロパティ設定→4) メソッド呼び出し
という一連の流れを実機で動かしながら確認しました。ファイルを分けて require_once
で読み込むことで、大規模開発でも見通しの良いプロジェクト構造を保てます。次のステップとしては、アクセス修飾子の使い分けや継承・インターフェースを取り入れ、より高度なオブジェクト指向設計へ進んでみましょう。