icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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 関数名 (引数){
    コード
  }]
}

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

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

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

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

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サービスを作りたい
1時間でできる無料体験!

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

 

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

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

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

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する