PHPを使う上で知っておきたいクラスとは【初心者向け】
プログラミング初心者向けにPHPを使う上で知っておきたいクラスについて解説しています。オブジェクト指向やクラス、継承といった聞きなれない用語が多く出ることでしょう。実際の業務でも役立つ知識なので、ぜひ手を動かして書いてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回はPHPでオブジェクト指向のプログラミングについて解説していきます。
クラスやインスタンス、継承など実際に業務に関わる際には重要な知識になります。PHPを始めたばかりという人はまだ使ったことが無いかもしれませんが、覚えておくととても便利なので、ぜひ自分でも書いてみてください。
そもそもPHPが何か分からない場合は、先にPHPとはの記事をご覧ください。
なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。(動画は3つに分かれています)
オブジェクト指向とは
オブジェクト指向によるプログラミングとは、プログラムを機能ごとにまとめて作成していく手法を指します。
例えばショッピングサイトの場合、「ページを表示する機能」「金額を計算する機能」「メールを送信していく機能」など様々な機能がありますよね。
これらの機能ごとにプログラムを作成する手法がオブジェクト指向です。
オブジェクト指向の一番の利点は、保守やデバッグがしやすくなることです。
例えば以下のような結果を表示させたいと考えてみてください。
オブジェクト指向を使用しない場合
次の例では、設定機能と表示機能が分けられていません
//--------関係ある部分だけ抜粋 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を学んで未経験からWebエンジニアを目指す方法とは
インスタンスとは
インスタンスとは、よく「クラスに対する実体」と解説されますが、クラスに具体的な値を持たせたものと考えることができます。
一つのクラスに対して、インスタンスはいくつでも作成することができます。
書き方はこの一文のみです。
インスタンス名 = new クラス名
さらに具体的な値を設定することができます。
インスタンス->プロパティ = 値
継承とは
継承とは、新しいクラスを作成する時に既存のクラスの内容をコピーして使用できるようにすることです。
加えて新しいクラス独自のプロパティやメソッドも定義できます。
継承を行う場合にはextendsを使います。
Class クラス名 [extends 既存のクラス名]{ [$ プロパティ名 [ = 値];] [ function 関数名 (引数){ コード }] }
既存クラスの内容については改めて定義しなくても使用可能です。
実際にプログラミングしてみよう
表示させたいのは以下の結果です。
まず上の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人ずつつき、マンツーマンのメンタリングで学習をサポートし、オリジナルWebサービスを開発することが可能です。
独学に限界を感じている場合はご検討ください。