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

PHPは膨大な関数ライブラリを持っていますが、オブジェクト指向プログラミングが全盛となてきてる現在、PHPにもクラスライブラリが多数提供されてるようになってきました。
PHPでも煩雑になりがちな「手続き型」よりも「オブジェクト指向プログラミング」を利用する機会が増えてきます。
クラスと関数・変数の違い
クラスとは関数や変数の集合体のようなものです。
変数はデータを保持することができ、関数はデータの処理を行うことができます。
クラスは関数と変数の集合体であることから、データの保持・処理どちらも行うことができます。
変数 | データを保持 |
関数 | データの処理 |
クラス | 保持・処理どちらも行う |
クラス内の変数・関数・定数の名称
クラスの中に定義された、変数・関数・定数をそれぞれ
- 変数は「メンバ変数」または「プロパティ」
- 関数は「メンバ関数」または「メソッド」
- 定数は「オブジェクト定数」
と呼びます。
通常時 | クラス内に定義された場合の呼び名 |
---|---|
変数 | メンバ変数、プロパティ |
関数 | メンバ関数、メソッド |
定数 | オブジェクト定数 |
クラスの基本〜オブジェクト指向プログラミング〜
クラスを作成する
クラスを作成するには「class クラス名(){ … }」で作成します。
1 2 3 4 5 | <?php class classTest{ } ?> |
メンバ変数・プロパティを作成
次にクラス内にプロパティ(メンバ変数)を作成します。
プロパティ(メンバ変数)に命名規則はありませんが $_[プロパティ名] とすることが一般的です。
1 2 3 4 5 6 7 | <?php class classTest{ // プロパティー作成 private $_data01 = ''; private $_data02 = ''; } ?> |
「private」を頭につけている理由は、このプロパティはこのクラス内でのみ読み書き可能にするためです。
その他、「static」や「public」なども利用可能です。
メソッド(メンバ関数)を作成
次にクラス内にメソッド(メンバ関数)を作成します。
今回はプロパティに値を与えるセッターとプロパティーの値を取得するゲッターを作成してみます。
※一般的に、値を代入するメソッド(メンバ関数)をセッター、値を出力するメソッド(メンバ関数)をゲッターと呼びます。
クラス内のプロパティへの代入や取得が基本的にメソッドを利用して行うので「セッター」「ゲッター」は頻繁に作成するメソッドとなります。
この「セッター」「ゲッター」を利用してプロパティを操作するため「private」でプロパティを宣言しています。
※プロパティにprivateを指定することでクラス外からの変数の変更ができなくなり思わぬ変更への対応が可能となります。
また、クラス内でプロパティ(メンバ変数)を利用する際は「$_data01」ではなく「$this->」を利用して「$this->_data01」と記述します。
※$this->$_data01 ではなく $this->_data01、「$_data01」の「$」を省略している部分に注意してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class classTest{ // プロパティ作成 private $_data01 = ''; private $_data02 = ''; // メソッドの作成 public function setData01( $val ){ $this->_data01 = $val; } public function getData01(){ return $this->_data01; } public function setData02( $val ){ $this->_data02 = $val; } public function getData02(){ return $this->_data02; } } ?> |
メソッドはプロパティとは異なり、クラス外から利用可能にする必要があるため「public」を利用しています。プロパティ同様「static」や「private」も利用可能です。
これで簡単なクラスが作成できました。
インスタンス〜クラスを利用する準備〜
クラスを利用するには、まず利用するクラスを「インスタンス化」する必要があります。
インスタンス化するにには「new演算子」を利用します。作成されたオブジェクトは変数に格納されます。
1 2 3 4 5 | <?php // インスタンス $obj = new classTest(); ?> |
プロパティ、メソッドの呼び出し方
インスタンスが完了したのでプロパティやメソッドを利用してみます。
プロパティーやメソッドを利用するには「->」アロー演算子を利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php // インスタンス $obj = new classTest(); // メソッド(セッター)を利用しプロパティに値をセットする $obj->setData01('データ1'); // メソッド(ゲッター)を利用しプロパティを呼び出す echo $obj->getData01(); // セットしていないプロパティを呼び出す echo $obj->getData02(); ?> |
1 2 3 | // 結果 データ1 ←何もセットされていないので表示されない |
クラスの利用してみて
クラスの簡単な説明は以上ですが、クラスの利便性を理解するためには、より実践的なクラスを作成し利用するのが近道です。
S.E->お勧め記事;
- プログラマー になる為に必要な プログラミング以外 の知識・スキル
- XSERVERにSSHを利用してLaravel環境を構築する
- PHPフレームワーク「Laravel」ディレクティブ-繰り返し処理(ループ処理)-
- CrowdWorks 提案後、受注に繋がりました。提案〜契約までの流れを解説
- CrowdWorks いつの間にか「プロクラウドワーカー」になっていた
- macOS Monterey にアップデート後、composerやhomebrewでenv: php: No such file or directoryが出る
- PHP フレームワーク Laravel ディレクティブ – ループ変数 $loop –
- Panic Nova 購入から1年が過ぎライセンスの更新時期の注意点
- Shopify APIを利用して在庫管理を行う
S.E->PR;
チームのタスク管理ツール【backlog】
FREENANCE(フリーナンス)
S.E->Weekly Ranking;
S.E->プロフィール;

