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を継続的に学習するコツ

PHPの学習をしていて、わからないところが多く何回も調べながらやるのは正直、嫌になってしまいますよね。そこで、どのようにすれば継続的に学習を続けて行けるのかそのコツをご紹介します。

目的を明確にする

まずは、なぜPHPを学んでいるのか明確にしましょう。例えば、PHPを学んで

  • Webサイトが作りたい
  • WordPressの編集がしたい
  • エンジニアとして転職したい
  • フリーランスを目指したい


など、目的は色々あると思います。

この目的を明確にすることがとても大事で、PHPを学ぶ学習意欲に繋がっていきます。目的がないまま学習をしていると、学習すること自体が目的になってしまい、ゴールのない果てしない道を進むことになります。その結果、挫折してしまう人が多いのが現状となっています。

そうならないためにも、PHPを学ぶ目的は言えるようにしましょう。もし言えない場合は、学ぶプログラミング言語自体間違っている可能性もあります。なので、しっかり目的から学んでいる言語があっているか確認しましょう。

学習プランを決める

目的が明確になったら、次に学習プランを立てましょう。この学習プランを立てずに学習している人が多いのですが、学習プランがないと自分が今どのくらい進んでいて、後どのくらい学習をすればいいのか見えないので、学習をすること自体がきつく長続きしません。

学習を継続的に続けるためには学習プランは必須とも言えます。いつまでに、どのレベルになっていて、最終的なゴールはいつ達成するのかはしっかり決めましょう。

先生を見つける

「何度もエラーになって、自分で調べては修正する」この繰り返しがPHPを学習していると起こります。調べてもよくわからないし、時間もかかってしまってプラン通りに学習が進まないというのは当然のように起こります。

調べて直したけどうまく動かないしどうなってんの

このように思い、学習をすること自体に嫌気が指して挫折してしまう人も多いです。

そうならないためにも、「先生」を見つけることが大事になります。先生と言ってもそう簡単に探せそうにないですよね。最近ではSNSでもコミュニティーが増え、相談しやすい環境が増えてきています。こういったコミュニティーや勉強会を利用して先生を見つけるのも一つの手です。

自分に投資することも大事

学習サイトやアプリなど、無料で学習できる環境が整ってはいるものの自分に投資して学習をすることも大事です。本や有料学習サイトは、無料では学べない範囲の学習や機能が付いているので、効率的に学習をすることが可能です。

そして、投資のもう一つの方法がプログラミングスクールで学ぶことです。

独学と違い、プログラミングスクールでは上で紹介した学習を継続するためのサポートが徹底されているので、最も効率の良い学び方と言えるでしょう。先生も自分で探す必要がないので、エラーなどで躓いて時間がかかる心配もありません。

ですが、当然いきなりスクールに入るのは抵抗がありますよね。

その場合は、弊社で行っている無料体験レッスンへ参加してみてください。この無料体験レッスンでは、なぜPHPを学ぶのかその目的をヒアリングして、本当にPHPを学ぶべきなのか、その学習プランはどのように立てるのかなどの提案をしています。

目的をヒアリングすることで、あなたに最適な言語や学習プランが分かるので、最速でエンジニアを目指せるイメージがわきます。

手軽にしかもオンラインでも受けられるので、ぜひ一度目的を明確にしてみましょう。

無料体験レッスンに申し込む

まとめ

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

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


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

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

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

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