PHPを使う上で知っておきたいクラスとは【初心者向け】

プログラミング初心者向けにPHPを使う上で知っておきたいクラスについて解説しています。オブジェクト指向やクラス、継承といった聞きなれない用語が多く出ることでしょう。実際の業務でも役立つ知識なので、ぜひ手を動かして書いてみてください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回はPHPでオブジェクト指向のプログラミングについて解説していきます。

クラスやインスタンス、継承など実際に業務に関わる際には重要な知識になります。PHPを始めたばかりという人はまだ使ったことが無いかもしれませんが、覚えておくととても便利なので、ぜひ自分でも書いてみてください。

そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。(動画は3つに分かれています)

 

オブジェクト指向とは

オブジェクト指向によるプログラミングとは、プログラムを機能ごとにまとめて作成していく手法を指します。

例えばショッピングサイトの場合、「ページを表示する機能」「金額を計算する機能」「メールを送信していく機能」など様々な機能がありますよね。
これらの機能ごとにプログラムを作成する手法がオブジェクト指向です。

オブジェクト指向の一番の利点は、保守やデバッグがしやすくなることです。

例えば以下のような結果を表示させたいと考えてみてください。

phpobject_result

 

オブジェクト指向を使用しない場合

次の例では、設定機能と表示機能が分けられていません

//--------関係ある部分だけ抜粋
echo "アイテム : シャツ"<br />
      値段(税込): 1080<br /><br />";
echo "アイテム : シューズ"<br />
      値段(税込): 3240<br /><br />";

例えば消費税が変わったとしましょう。

オブジェクト指向を使用していない場合、プログラム中で消費税の計算を使用している商品を全て洗い出さないといけません。大規模なシステムになると大変です。

 

オブジェクト指向を使用した場合

次の例では設定機能と表示機能を分けてプログラムしてみます。

設定機能のプログラム部分

//設定部分
  public function sayItem (){
    print 
    "アイテム : ".$this->name .
    "<br />
    値段(税込): ".$this->price * 1.08."<br /><br /><br />;";
  }

表示機能のプログラム部分

//表示部分
  $shirts -> sayItem();
  $shoes -> sayItem();
  $socks -> saySetItem(); 
  $socks -> sayItem();
?>

表示機能は変えずに、設定機能の一か所「1.08」を修正するだけで済みます。

 

大石ゆかり

田島メンター!オブジェクト指向とは何でしょうか?

田島悠介

簡単に言うと、機能ごとにまとめて作っていこうってことなんだ。

大石ゆかり

機能ごとに作ると良いんですか?

田島悠介

その部分だけ変更すれば良くなるよね。再利用がしやすいんだ。オブジェクト指向は、クラスを作って実現するので、クラスについて見てみよう!

 

クラスとは

クラスとは一機能に関する、プロパティとメソッドの集合です。

共通で必要とされる変数と関数を集めたものと理解するとよいでしょう。書き方は以下の通りです。

class クラス名{
  [$ プロパティ名 [ = 値];][ function 関数名 (引数){
    コード
  )]
}

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

インスタンスとは

インスタンスとは、よく「クラスに対する実体」と解説されますが、クラスに具体的な値を持たせたものと考えることができます。
一つのクラスに対して、インスタンスはいくつでも作成することができます。

書き方はこの一文のみです。

インスタンス名 = new クラス名

さらに具体的な値を設定することができます。

インスタンス->プロパティ = 値

 

継承とは

継承とは、新しいクラスを作成する時に既存のクラスの内容をコピーして使用できるようにすることです。
加えて新しいクラス独自のプロパティやメソッドも定義できます。

継承を行う場合にはextendsを使います。

Class クラス名 [extends 既存のクラス名]{
  [$ プロパティ名 [ = 値];]
  [ function 関数名 (引数){
    コード
  }]
}

既存クラスの内容については改めて定義しなくても使用可能です。

 

実際にプログラミングしてみよう

表示させたいのは以下の結果です。

phpobject_result-1

まず上の2つに共通する、商品名と値段の設定機能から作成していきましょう。

はじめに、クラスを作成して商品名と値段を定義します。

Class Shop{
//プロパティを設定
  public $name ;
  public $price ;
//メソッドを設定
  public function sayItem (){
    print
    "アイテム : ".$this->name ."
    値段(税込): ".$this->price * 1.08.";";
  }
}

インスタンスにより具体的なプロパティの値を設定していきます。

//Shopクラスを用いてシャツの名前と値段を設定
   $shirts = new Shop();
   $shirts->name = "シャツ";
   $shirts->price = 1000;
//Shopクラスを用いてシューズの名前と値段を設定
   $shoes = new Shop();
   $shoes->name = "シューズ";
   $shoes->price = 3000;

ここで一度表示機能のプログラムを加え、結果を見てみましょう。

クラスで定義した関数をそれぞれ呼び出します。

//結果を表示する機能
   $shirts -> sayItem();
   $shoes -> sayItem();

2つの商品の名前と値段が表示されていますね。

次は継承です。

Shopで定義した変数nameとprice、関数sayItemがそのまま使えます。さらに2倍の値段を使用した文章を表示させるようにしましょう。

//セットアイテム用クラス設定
  Class SetShop extends Shop{
//独自のメソッドを設定する
    function saySetItem() {
      print "※税抜".$this->price * 2 ."円以上ご購入でプレゼントを差し上げます";
      }
  }

インスタンスでは靴下のプロパティを設定していきます。

//セットアイテム用クラスを用いて靴下の名前と値段を設定する
   $socks = new SetShop();
   $socks->name = "靴下";
   $socks->price = 400;

プログラムの一番下に、靴下を表示させる関数を呼び出しましょう。
新しいクラスの関数、もとのShopクラスの関数両方使えることを確認しましょう。

//結果を表示する機能
   $socks -> saySetItem();
   $socks -> sayItem();
   ?>

 

おわりに

オブジェクト指向は一度で完全に理解するのは難しいです。上記の例からさらにプロパティやメソッドを変更したり、インスタンスを追加したりして手を動かしながら覚えていきましょう。

 

大石ゆかり

ボリュームが多いですねー。

田島悠介

変数と関数を持つことが出来る、小さなプログラムの単位をクラスって考えると楽かもね。

大石ゆかり

小さな部品って感じですかね?

田島悠介

そうそう。クラス単位に分けたほうが、良いことが多いんだよ。特に大規模になってくると必須と言えるんだ。

 

PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。