PHPでクラスを使いこなすには?基礎から応用まで解説

PHPでクラスを使う方法が知りたい
クラスの継承や抽象化の意味や使い方がいまいちわからない
PHPのクラスを使いこなせるようになりたい

PHPのクラスは通常のクラスとしての使い方以外に、クラスを継承したり、静的メンバの参照、クラス内で定数を使用する方法など、クラスを使用してさまざまな処理が可能です。

しかし、できることが多すぎていまいちクラスの使い方を理解している方も多いのではないでしょうか?

そこで、今回はクラスとは何か?というところから、実際のクラスの使い方、継承や抽象化などより応用的な使い方についても解説していきます。

この記事はこんな人のために書きました

  • クラスの概要や使い方について知りたい方
  • クラスの継承や抽象化について知りたい方
  • クラスのさまざまな使い方について知りたい方

この記事を読んで、PHPのクラスを使いこなせるようになりましょう!

PHPのクラスとは

クラスとは簡単に説明すると、プログラムの処理をまとめたオブジェクトのことで、あらゆるプログラミング言語でクラスは使用されます。

クラスの中では主に、プロパティ(変数や定数)やメソッド(関数)の定義を記述します。クラスを定義するには、classキーワードを指定し、その次にクラス名を指定します。

クラスの書き方:

クラス名には予約語以外のあらゆる名前を指定することができます。クラス名の後には波括弧{}のペアを指定して、そのなかにクラスの処理を記述していきます。

PHPなどのオブジェクト指向のプログラミング言語では、クラスを使用するために、クラスのオブジェクトを生成する必要があります。

生成したオブジェクトからプロパティの値を参照したり、メソッドを呼出したりすることができます。

PHPのクラスの使い方

基本的な使い方

ここでは、クラスの使い方を見ていきましょう。以下にclassを使用した簡単なサンプルを記述します。

サンプルプログラム

実行結果:

サンプルでは、クラスSampleClassを作成し、その中でプロパティを宣言して値を代入しています。実際にクラスを使用するには、クラスのオブジェクトを生成する必要があるため、「$sample = new SampleClass()」でインスタンスを生成しています。

クラス内のプロパティを参照するには、作成したオブジェクト変数に矢印演算子(->)でクラスのプロパティを指定します。

継承(extends)

クラスのプロパティやメンバを、他のクラスで継承する場合はextendsを指定します。extendsを使用して、クラスを継承するためには、以下のように記述します。

継承の書き方:

以下にextendsを指定してクラスを継承する方法を記述します。

サンプルプログラム

実行結果:

このサンプルでは親クラスであるParentClassと、子クラスであるChildClassクラスを定義しています。

ChildClassではextendsを指定して、親クラスのParentClassクラスを継承しています。クラスの継承を指定すれば、子クラスのインスタンスから親クラスのメソッドにアクセスできます。

クラスを継承する方法については、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね!

抽象化(abstract)

抽象クラスとは他のクラスを継承して使用するためのクラスです。

クラスを抽象化すると、そのクラスは直接インスタンスを生成できなくなります。抽象クラスを使用するためにはabstractを指定する必要があります。

抽象クラスの定義:

抽象クラスには抽象メソッドを定義することができます。抽象メソッドは直接処理を持たない名前だけ定義されたメソッドです。抽象メソッドを定義するには抽象クラスと同じくabstractを指定します。

抽象メソッドの定義:

以下に抽象クラスを使用したサンプルを紹介します。

サンプルプログラム

実行結果:

サンプルプログラムでは通常のクラスのオブジェクトを生成し、オブジェクトから抽象クラスのメソッドを呼出しています。抽象クラスで定義している抽象メソッドは、継承先のクラスで必ず再定義(オーバーライド)する必要があります

コンストラクタ(__construct)

コンストラクタとはクラスからインスタンスを生成するときに、最初に呼び出される関数のことを言います。コンストラクタは__construct()で定義し、newでインスタンスを生成すると必ず実行されます。

コンストラクタの定義:

コンストラクタはクラスのインスタンスを生成する度に実行されますので、変数などを初期化する処理でよく使われます。以下にコンストラクタを使用したサンプルを紹介します。

サンプルプログラム

実行結果:

サンプルプログラムではクラスのインスタンス生成と同時にコンストラクタ(__construct)が呼び出され、変数$textの初期化処理を行っています。

そのあとに「$class->show()」でメソッドを呼び出し、変数を参照すると変数に値が設定されていることが分かります。

静的メンバの使用(static)

クラスのプロパティやメソッドなどのメンバを参照するには、new演算子を使用して、クラスのインスタンスを生成する必要があります。

しかし、クラス内でstaticを指定すれば、そのクラスのメンバはインスタンスを生成しなくても、参照することが可能です。

staticな変数を指定するには、以下のように記述します。

静的メンバの定義:

以下にstaticな変数を定義して、クラス外からインスタンスを生成しないでアクセスするサンプルを紹介します。

サンプルプログラム

実行結果:

staticを指定して静的メンバを参照する方法については、以下の記事で詳しく解説しています!

定数の使用(const)

クラス内で定数を指定するには、constを使用します。constを指定した定数をクラス内部で定義するときにはconstの後に定数名と値を指定します。

定数の定義:

以下にconstを使用して定数を指定する方法を紹介します。

サンプルプログラム

実行結果:

定数を使用する方法については、以下の記事で詳しく解説しています!


【PHP入門】defineで定数を定義する方法
更新日 : 2019年2月12日

例外の指定(exception)

プログラムの実行中に発生する例外を扱うには、try~catch文を指定します。

例外は独自の例外クラスを使用することも可能です。使用するには、Exceptionクラスを拡張します。

例外処理:

そんな例外クラスの使用方法については、以下の記事で詳しく解説しています!

プロパティを取得(get_class_vars)

クラスのデフォルトのプロパティのを取得するにはget_class_vars関数を使用します。

get_class_vars関数は以下のように記述します。

書き方:

返り値:
現在のスコープから参照できる変数やデフォルト値を連想配列で返します。配列要素は「変数名=>値」となります。エラーが発生した場合はFALSEを返します。

サンプルプログラム
以下にget_class_vars関数を使用して、クラスのプロパティを取得するサンプルを紹介します。

実行結果:

先述したようにget_class_vars関数は、実行時のスコープから参照できる範囲の値を取得します。そのため、コンストラクタでプロパティの値を変更してもget_class_varsでは参照できません。

クラスが定義済みか確認する(class_exists)

クラスが定義済みか確認したい場合はclass_exists関数を使用します。

書き方:

引数:
第一引数にはクラス名を指定します。クラス名は大文字と小文字を区別しません。
第二引数にTRUEを指定すると、クラスのオートローディングを行います。

オートローディングについては以下のサイトで詳しく解説しています。
http://php.net/manual/ja/language.oop5.autoload.php

返り値:
指定したクラスが定義されている場合はTRUE、指定されていない場合はFALSEを返します。

サンプルプログラム:

実行結果:

まとめ

ここでは、PHPで使用するクラス(class)について以下の内容を解説しました。

  • クラスとは
  • クラスの基本的な使い方
  • クラスの継承(extends)
  • クラスの抽象化(abstract)
  • クラスのコンストラクタ(__construct)
  • クラスで静的メンバを使用する(static)
  • クラス内で定数を使用する(const)
  • 例外を指定する(exception)
  • クラスのプロパティを取得する(get_class_vars)
  • クラスが定義済みか確認する(class_exists)


クラスはプログラムを扱う上で、基本的な処理となりますので使い方はしっかりと覚えておきましょう。もし、クラスを使用する方法を忘れてしまったら、この記事を思い出してくださいね。

現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

LINEで送る
Pocket

書いた人

侍ブログ編集部

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説