PHPのstaticメソッド・プロパティの使い方を初心者向けにやさしく解説!
生徒
「PHPのstaticメソッドとかプロパティってよく聞くけど、どういうときに使うんですか?」
先生
「とても大事なポイントですね!staticは、クラスから直接呼び出す特別な機能なんですよ。」
生徒
「普通のメソッドとは何が違うんですか?」
先生
「それでは、PHPのstaticメソッドとプロパティについて、基礎から丁寧に見ていきましょう!」
1. PHPのstaticとは?初心者でもわかる基本の意味
PHPにおけるstatic(スタティック)は、「そのクラスをわざわざ使わなくても、直接アクセスできる」便利な機能です。たとえば、電卓を使いたいときに、いちいち電卓を買わずに、壁に備え付けの計算機を押すイメージです。
通常、PHPのメソッド(関数)やプロパティ(変数)を使うには「インスタンス化(=newして使う)」が必要ですが、staticを使えばそれを省略できます。
2. staticメソッド・staticプロパティの基本構文
以下がPHPでのstaticの書き方です。
class Calculator {
public static $rate = 1.1;
public static function add($a, $b) {
return $a + $b;
}
}
このように、staticキーワードを使うことで、クラスの中にあるけれど、クラスを作らずに使える機能になります。
3. staticメソッド・プロパティの呼び出し方
staticなメソッドやプロパティは、次のようにクラス名から直接呼び出します。
echo Calculator::add(5, 3); // 8を出力
echo Calculator::$rate; // 1.1を出力
ポイントは「::(ダブルコロン)」でクラスから直接アクセスすることです。この記号は「スコープ定義演算子」と呼ばれます。
4. staticを使うときの具体例(定数クラスとして活用)
よくある使い方としては、税率や設定値など「どこからでも同じ値を使いたい」ときにstaticプロパティを使います。
class Tax {
public static $rate = 0.1;
public static function withTax($price) {
return $price * (1 + self::$rate);
}
}
echo Tax::withTax(1000); // 1100 を出力
このように、どこでも使いたい定数や共通の処理をまとめておけるのがstaticの便利なところです。
5. selfと$thisの違いを知ろう
selfと$thisの違いも初心者がつまずきやすいポイントです。
- $this:インスタンス(実体)を指します。普通のメソッドやプロパティに使います。
- self:クラスそのものを指します。
staticなものに使います。
staticの中では$thisは使えません。代わりにself::やstatic::を使います。
6. staticの注意点!使いすぎに注意
staticは便利ですが、何でもかんでも使ってしまうと、コードが複雑になったり、他のプログラムと連携しづらくなったりします。
特にオブジェクト指向プログラミング(OOP)では、「状態を持たせたいとき」にはstaticではなく、インスタンスを使うのが基本です。
7. staticとconst(定数)の違いも覚えておこう
staticプロパティとconst(定数)は、似ていますが役割が違います。
- static:値の変更ができる(publicなら外部からも変更可能)
- const:一度決めたら変更できない
class Setting {
const SITE_NAME = "MySite";
public static $version = "1.0";
}
echo Setting::SITE_NAME; // "MySite"
echo Setting::$version; // "1.0"
8. よくある初心者のつまずきポイント
初心者がstaticを使うときに間違いやすいポイントを紹介します。
- プロパティに
$をつけ忘れる:self::rateではなくself::$rate $thisをstaticの中で使ってしまう:static内では$thisは使えません- クラス名のタイプミス:呼び出すときは正確なクラス名を記述
9. staticを使った便利なユーティリティクラスの例
staticメソッドは「便利ツール集」のような使い方ができます。たとえば、日付フォーマットの関数などを1つにまとめておけば、毎回同じ処理を簡単に使いまわせます。
class DateHelper {
public static function now() {
return date("Y-m-d H:i:s");
}
}
echo DateHelper::now(); // 現在日時が表示される
まとめ
PHPのstaticメソッド・プロパティをしっかり振り返ろう
この記事では、PHPの static メソッドと static プロパティについて、初心者向けに基礎から丁寧に解説してきました。
staticは、クラスをインスタンス化せずに直接使える仕組みであり、PHPで効率よく共通処理を書くために欠かせない機能です。
特に、計算処理や設定値、共通で使う便利な処理をまとめる場面では、staticの考え方を理解しているかどうかで、コードの書きやすさが大きく変わります。
通常のメソッドやプロパティは、new を使ってオブジェクトを作成しなければ利用できませんが、
staticを使うことで「クラスそのものが持っている機能」として直接呼び出せるようになります。
これにより、毎回オブジェクトを作る必要がなくなり、処理の意図も分かりやすくなります。
staticが向いている場面と向いていない場面
staticメソッドやstaticプロパティは、「どこから呼んでも同じ結果になる処理」や 「アプリ全体で共通して使う値」を扱うときにとても向いています。 たとえば、税率、バージョン情報、日付処理、文字列の変換などは、staticでまとめておくと管理がしやすくなります。
一方で、ユーザーごとに状態が変わる情報や、データを保持し続けたい処理にはstaticは向いていません。 そういった場合は、インスタンスを使って値を管理する方が安全で、オブジェクト指向らしい設計になります。 staticは便利ですが、使いすぎると処理の流れが見えにくくなるため、目的を意識して使うことが大切です。
staticとselfの関係を整理しよう
staticメソッドやプロパティの中では、$this は使えず、代わりに self:: を使う必要がありました。
これは、staticが「オブジェクト」ではなく「クラス」を対象としているからです。
初心者のうちは、この違いでエラーにつまずきやすいですが、
「インスタンスなら$this、クラスならself」と覚えておくと混乱しにくくなります。
復習用:staticを使ったシンプルなサンプル
<?php
class MessageHelper {
public static function hello($name) {
return $name . "さん、こんにちは";
}
}
echo MessageHelper::hello("太郎");
?>
このように、staticメソッドを使えば、ちょっとした共通処理を簡単にまとめることができます。 クラス名から直接呼び出せるため、どこで使われている処理なのかも分かりやすくなります。
生徒
「staticって難しそうだと思っていましたけど、 クラスを作らなくても使える共通の機能なんだと分かって、だいぶイメージしやすくなりました。」
先生
「それは良い理解ですね。staticは、PHPでよく使われる便利な仕組みなので、 早めに慣れておくとコードを書くのが楽になりますよ。」
生徒
「全部staticにすれば楽なのかなと思っていましたけど、 使いどころを選ばないといけないんですね。」
先生
「その通りです。staticは便利ですが、状態を持たせたい場合はインスタンスを使う方が安全です。 目的に合わせて使い分けることが、PHP上達のポイントですよ。」
生徒
「これからPHPでクラスを書くときは、 staticにする理由を考えながら書いてみます!」
今回学んだstaticメソッドとstaticプロパティの知識は、 PHPのクラス設計やオブジェクト指向プログラミングを理解するうえで重要な基礎になります。 実際にコードを書きながら、少しずつ使いどころを体で覚えていきましょう。