こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのclassについて説明します。PHPだけでなく、プログラミング学習を始めて間もないときは、クラスについてなんとなくわかるけど、実際のプログラムで使うのかわからなかったりしますよね。
PHPのクラスについて基本的な取り扱い方を説明し、一通り自分でプログラムを組めるようになるので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
クラスとは?
そもそも、プログラムにおける”クラス”とは何でしょうか。クラスの説明に入る前に、簡単に「オブジェクト指向」について説明します。
この記事を読んでいる方は、一度は”オブジェクト”という言葉を聞いたことがあるのではないでしょうか。このオブジェクト指向とは、実装したい機能ごとにプログラムをまとめて作成することを意味します。プログラム内で実施したいことを、ただ順番通りに書くのでなく、「計算するところ」や「結果を表示するところ」と処理内容ごとにまとめる書き方です。
そこで登場するのが、クラスです。クラスは、メソッドとプロパティによって成り立ち、設計図と呼ばれたりしています。このクラスによって、インスタンスが作られます。いきなり、専門用語がでてきたので、それらの言葉の説明からしていきます!
メソッド・プロパティ・インスタンスとは?
では、PHPのクラス作成に必要なメソッドとプロパティ、クラスをもとに作成されるインスタンスとは何なのでしょうか。
メソッド
メソッドとは、クラス内で定義されている関数のことを指します。言い換えると、そのクラスによって、どんなことを実施させたいかという機能そのものです。
プロパティ
プロパティは、クラス内で定義されている変数のことを指します。言い換えると、そのクラスによって準備された、値やデータのことをです。
インスタンス
インスタンスは、クラスという設計図によって作られたオブジェクトのことを指します。つまり、こちらの注文内容に即して、設計図通りに作られた製品ということになります。
オブジェクト指向について理解を深めたい方は、以下の記事などを参考にしてください。
参考 【初心者向け】PHPのオブジェクト指向を解説!ウェブカツ ブログPHPのclassについて
それでは、PHPのクラスについての操作方法について見てみましょう。まずは、PHPでのクラスの定義方法について説明します。
定義方法
1 2 3 |
class 'クラス名' { // 処理内容(メソッドやプロパティの記述) } |
クラスの定義方法は、このようになります。classの直後に、クラス名を記述します。このクラスが設計図名です。では、実際のプログラムを例として見てみましょう。
実践プログラム例
1 2 3 4 5 6 7 8 9 |
// Humanクラスを定義 class Human{ public $name; // プロパティの変数$nameを宣言 public $age; // プロパティの変数$ageを宣言 public function Infomation(){ // メソッドのInfomationを定義 echo $this->name. 'さんは'. $this->age. '歳です'; } } |
このように、クラスは定義します。簡単に中身を見ていきましょう。2行目で、Humanクラスを定義しています。3,4行目では、プロパティとなる変数$nameと$ageを宣言しています。それぞれのプロパティの前に書かれているpublicについては、後ほど説明します。
6行目では、メソッドとなるInfomationメソッドを定義しています。このメソッド内では、プロパティの変数によって表示内容が変わるようなメソッドとなっています。nameとageの前にある$thisは、擬似変数thisと呼ばれるもので、クラス内でプロパティやメソッドにアクセスする際に使います。
このように、プロパティとメソッドを記述することで、クラスを作成することができます。クラスは、実装したい機能とデータが一緒が組み合わせになっているオブジェクト指向の一部ということが分かっていただけたのではないでしょうか。
次は、先ほど登場した”public”などのアクセス修飾子について説明します。
アクセス修飾子
アクセス修飾子とは、クラス内で変数やメソッドが重複しないように、アクセスできる範囲を限定する機能です。主なアクセス修飾子として、public・protected・privateがあります。それぞれについて簡単に見てみましょう。
public
クラス内外関係なく、アクセス可能です。
protected
クラス内と継承先のクラスから、アクセス可能です。
private
クラス内のみ、アクセス可能です。
アクセス修飾子を使い分けることで、クラス内でのみデータを公開したり範囲を限定できるため、情報が漏れにくくなり、外部から呼び出されたくないメソッドを守ったりすることができます。アクセス修飾子について、詳しく学習したい人は、以下のPHP公式サイトを参考にしてください。
参考 アクセス権php公式サイト呼び出し方
続いて、クラスの呼び出し方について説明します。クラスの呼び出しとは、クラスという設計図を用いてインスタンスを作成するということになります。では、基本構文から見てみましょう。
1 |
'インスタンス名' = new 'クラス名'; |
インスタンスの生成には、new演算子を用います。new演算子を用いてクラスを呼び出し、インスタンスに格納するという流れです。また、クラス内のプロパティやメソッドにアクセスしたい場合は、このインスタンス名を用いて次のように記述します。
1 2 |
'インスタンス名'->'プロパティ名' // クラス内のプロパティにアクセス 'インスタンス名'->'メソッド名' // クラス内のメソッドにアクセス |
このように、クラス内のプロパティやメソッドにアクセスする際は、インスタンス名のあとに「->」と書き、アクセスしたいプロパティ名やメソッド名を記述するだけで、アクセスすることができます。
実際に、先ほど作成したHumanクラスを呼び出すプログラムを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// クラスを呼び出し、インスタンス$PersonAと$PersonBを作成 $PersonA = new Human(); $PersonB = new Human(); // インスタンス$PersonAに対して、クラス内のプロパティ$nameと$ageを設定 $PersonA->name = 'Ami'; $PersonA->age = '25'; // インスタンス$PersonBに対して、クラス内のプロパティ$nameと$ageを設定 $PersonB->name = 'Nana'; $PersonB->age = '20'; // インスタンス$PersonAと$PersonAそれぞれに対して、クラス内のメソッドを呼び出す $PersonA->Information(); // 'Amiさんは25歳です'と表示される $PersonB->Information(); // 'Nanaさんは20歳です'と表示される |
2,3行目で、Humanクラスを呼び出してインスタンスの$PersonAと$PersonBを作成しました。6,7行目では、インスタンス$PersonAについて、クラス内に記述されていたのプロパティ$nameと$ageを定義しています。10,11行目ではインスタンス$PersonBについて同様のことを行っています。
それぞれのインスタンスによって、プロパティが異なるため、14,15行目に書かれているHumanクラス内のInformationメソッドによる呼び出しの結果も変わってきます。
クラスについては、アクセス修飾子や変数に対する理解の他にも、継承などいろいろな機能が備わっていて、理解を深めれば深めるほど、精度が高いプログラムになることでしょう。
まとめ
いかがでしたでしょうか?今回は、PHPのclassについて説明しました。
PHPのクラスは、プログラムが煩雑になったり、フレームワークを使う際には欠かせない概念なので、ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。