PHP クラス〜オブジェクト指向プログラミング〜 第2回〜未経験の為のPHPプログラミング講座〜

前回はクラスの作成と簡単な利用方法を解説しました。
今回は、また違った利用方法を解説します。
静的プロパティ(変数)と静的メソッド(関数)
前回のクラスの解説ではメソッド(関数)を利用してプロパティ(変数)を読み書きする方法でしたが、今回はインスタンスを生成せずにプロパティとメソッドを呼び出す方法を解説します。
インスタンスを生成せずにクラス内のプロパティやメソッドを呼び出すには、クラス名と「::」を利用します。
また、プロパティに関しては前回はクラス内でのみ利用可能な「private」を利用しましたが今回は「static」を利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php class classTest{ static $_data01 = '静的プロパティ'; public function getData01(){ return '静的メソッド'; } static function getData02(){ return '静的メソッド2'; } } echo classTest::$_data01; echo classTest::getData01(); echo classTest::getData02(); ?> |
1 2 3 4 | // 結果 静的プロパティ 静的メソッド 静的メソッド2 |
オブジェクト定数・クラス内定数
静的プロパティ、静的メソッドの呼び出しに「::」を利用しましたが、クラス内定数も「::」を利用して呼び出すことができます。
※クラス内定数の命名は全て大文字で区切りに「_」を利用するのが一般的です。
1 2 3 4 5 6 7 8 9 | <?php class classTest{ const CONSTANT_01 = 'クラス内定数その1'; const CONSTANT_02 = 'クラス内定数その2'; } echo classTest::CONSTANT_01; echo classTest::CONSTANT_02; ?> |
1 2 3 | // 結果 クラス内定数その1 クラス内定数その2 |
また、インスタンスを生成した場合も「::」を利用して呼び出すことができます。
1 2 3 4 5 6 7 8 9 10 11 | <?php class classTest{ const CONSTANT_01 = 'クラス内定数その1'; const CONSTANT_02 = 'クラス内定数その2'; } // インスタンス $obj = new classTest(); echo $obj::CONSTANT_01; echo $obj::CONSTANT_02; ?> |
1 2 3 | // 結果 クラス内定数その1 クラス内定数その2 |
クラス名を変数に格納して利用
あまり利用することはないと思いますが、クラス名を変数に格納して利用することもできます。
1 2 3 4 5 6 7 8 9 10 11 | <?php class classTest{ const CONSTANT_01 = 'クラス内定数その1'; const CONSTANT_02 = 'クラス内定数その2'; } $className = 'classTest'; echo $className::CONSTANT_01; echo $className::CONSTANT_02; ?> |
クラスの利便性は?
クラス内に定義したプロパティ(メンバ変数)やメソッド(メンバ関数)の様々な利用方法をみてきましたが、まだ、なぜわざわざクラスを利用する必要があるのか?わからないと思います。
関数の利用だけで良いのでは?と思う方もいると思います。
クラスの利便性は色々とありますが、複数人で開発する場合に、まず変数名や関数名の衝突を避けられます。
変数や関数は全てプロパティ(メンバ変数)、メソッド(メンバ関数)としてクラス内に定義されているので、別のクラスで同様の名前を利用してもエラーにはなりません。
また、プロパティ(メンバ変数)に「private」を利用し、メソッド(メンバ関数)のセッターでプロパティに値を代入するので予期せぬ変数の上書きを防ぐことや、外部からの変数への干渉をなくすことができます。
S.E->お勧め記事;
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- プログラマー になる為に必要な プログラミング以外 の知識・スキル
- CrowdWorks 提案後、受注に繋がりました。提案〜契約までの流れを解説
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- XSERVERにSSHを利用してLaravel環境を構築する
- Shopify APIを利用して在庫管理を行う
- Panic Nova 購入から1年が過ぎライセンスの更新時期の注意点
- CrowdWorks いつの間にか「プロクラウドワーカー」になっていた
S.E->PR;
チームのタスク管理ツール【backlog】
FREENANCE(フリーナンス)
S.E->Weekly Ranking;
S.E->プロフィール;

