見出し画像

【プロゲート】PHP PHP IIの学習内容まとめ

PHP II

1.目標物を確認しよう

オブジェクト指向を学ぼう
・このレッスンでは料理注文サイトを作っていく
・注文サイトを作りながらオブジェクト指向という概念について学んでいく
・オブジェクト指向は現代のプログラミングの中で最も重要な概念の1つ

オブジェクト指向とは?
オブジェクトは「もの」、指向は「〜を中心に」という意味で、オブジェクト指向を簡単に説明するとオブジェクト(もの)を中心にした考え方ということ
・例えば、現実のショップもECサイトも「商品」「ユーザー」「カート」などのオブジェクトが組み合わさってできていると考えることができる

プログラムでのオブジェクト
プログラムの世界でもオブジェクトをコードで再現する仕組みが用意されている
・この仕組みを使うと、それぞれのオブジェクトに関するプログラムの役割が明確化し、それらを組み立てるようにプログラムを書くことができる

オブジェクト
今回作成する料理注文サイトを見てみよう
・メニューの一つ一つをオブジェクト(もの)として、それらを組み立てながら注文サイトを作成していく

2.クラスとインスタンス

クラス
それでは実際に注文サイトを作るために、メニュー1つ1つのオブジェクトを作っていく
・オブジェクト指向では「クラス」というオブジェクトの設計図を作成し、クラス(設計図)を元にオブジェクト(実体)を生成する

クラスの書き方
・クラスは「class クラス名」と定義し、「{}」の間に、そのクラスの内容を書いていく
クラス名は大文字で始める

インスタンス
クラス(設計図)を元に生成された実体を「インスタンス」と呼ぶ
・インスタンスとオブジェクトは同じ意味で使われる
・インスタンスは「new」を用いて「new クラス名()」で生成できる
・「$変数名 = new クラス名()」のようにすることで生成したインスタンスを変数に代入している
・なお、インスタンスの生成はクラスの外で行う

3.プロパティ

プロパティとメソッド
・クラス(設計図)にはそのインスタンス(実体)が持つ「プロパティ」と「メソッド」の2つを定義する
・プロパティとはインスタンスが持つデータのことで、メソッドはインスタンスに関連する処理(関数)のこと

プロパティ
まずはプロパティ(インスタンスが持つデータ)について学んでいく
・Menuインスタンスはインスタンスごとにそれぞれ違った料理名を持つので、その料理名のためのプロパティをMenuクラスに定義する

プロパティの書き方
プロパティは「public $プロパティ名」のように定義する

プロパティへのアクセス
「インスタンス->プロパティ名」とすることで、そのインスタンスのプロパティにアクセスすることができる(プロパティ名に$は不要)
・プロパティにアクセスする際には「->」(ハイフン「-」と大なり「>」)を用いる

4.メソッド

メソッドとは?
・クラス(設計図)にメソッドを定義していく
・メソッドとはそれぞれのインスタンスが持つ関数のこと

メソッドの使い方
メソッドは「public function メソッド名()」のように定義する
・また、「インスタンス->メソッド名()」のようにメソッドにアクセスする(メソッドを呼び出す)ことができる

5.$this

$this
メソッド内でインスタンスのプロパティやメソッドにアクセスしたい時には「$this」という特殊な変数を用いる
・$thisはクラス内のメソッドの定義の中でのみ使用できる
・$thisはメソッドが呼ばれた時に、そのメソッドを呼び出しているインスタンスに置き換えられる

6.コンストラクタ

コンストラクタ
・「__construct」という特別なメソッドを定義すると、newを用いてインスタンスを生成するときに、このメソッドが自動的に呼ばれる
・このようなインスタンスの生成時に呼ばれるメソッドのことを一般的に「コンストラクタ」と言う

7.コンストラクタとプロパティ

コンストラクタと引数
__constructメソッドは引数をとることができる
・newを用いてインスタンスを生成する際には引数を与えることができ、その引数の値が__constructメソッドに渡される

コンストラクタとプロパティ
__constructメソッド内で、$thisを用いてインスタンスのプロパティに値をセットすることができる
・インスタンスの生成時にプロパティをセットすることができるので便利

8.HTMLとPHP

完成物に近づけよう
ここからはメニューの一覧と読みやすいコードの書き方を学んでいく

HTMLにPHPを埋め込もう
本格的にレイアウトを組んでいくために、HTMLにPHPのコードを埋め込んでいく
・PHPのコードを埋め込むことで、HTMLのコードとPHPのコードを切り分けることができ、見やすくなる

セミコロンを省略できる条件
PHPのコードは、文末にセミコロン「;」を使って区切る必要があると学習してきたが、PHPのコードを1行で書き表す場合は、区切る必要がないのでセミコロンを省略することができる

9.HTMLとPHP(2)

メニュー一覧を作ろう
4つのメニューが入った配列を用意して、その配列に対して繰り返し処理を用いて、それぞれのメニューを表示していく

foreach文をHTMLに埋め込もう
foreach文の「{」の代わりに「:」、「}」の代わりに「endforeach」と記述し、その間に処理を書いていく
・この処理部分にはHTMLのタグを書くことができるので便利

endif, endfor
if文、for文、while文やswitch文などもforeach文と同様に、それぞれ「endif」、「endfor」、「endwhile」、「endswitch」を使って書くことができる

10.ファイルを分けよう

require_once
コードが長くなってきたので表示用のファイル(index.php)とクラス定義用のファイル(menu.php)とデータの定義用のファイル(data.php)に分ける
・「require_once」を用いると別のphpファイルを読み込むことができる
・require_onceで読み込んだファイルで定義されているクラスや変数を、require_onceを記述したファイル内で使うことができる

11.画像と価格を表示しよう

画像と価格を表示しよう
それぞれの画像と価格を表示していく
・Menuクラスにimageプロパティとpriceプロパティを定義する

画像を表示しよう
imageプロパティの値は<img>タグのsrc属性に指定するため、クォーテーションの中に埋め込むことに気をつける
・また、echoをしないとphpの処理の結果が出力されず、HTMLに反映されないので注意

12.税込価格を表示しよう

税込価格を表示しよう
それぞれのpriceプロパティの値を用いて、税込み価格を表示していく
・Menuインスタンスのpriceの値を用いて税込価格を返すメソッドをMenuクラスに定義する

13.カプセル化を学ぼう

カプセル化を学ぼう
ここからは「カプセル化」というものを学んでいく
・「カプセル化」とは、オブジェクト指向の重要な機能の1つで、
使い手に必要ないものを隠してしまうことを言う

カプセル化とは
まずは、現実世界の例でカプセル化のイメージをつかもう
・例えば、パソコンの回路などはパソコンの内部に隠されており、ユーザーはキーボードなどの限られた部分しか操作することができない
・回路を隠す(カプセル化をする)と回路に触れてパソコンを壊してしまう危険を回避できる
・プログラミングでもこのような「カプセル化」という仕組みがある

クラスでのカプセル化
自分がクラスを作る際には、他の人がそのクラスを使いやすいように、その人に使ってほしい機能(料金を取得する機能)は公開し、クラスの外で使ってほしくない機能(料金を直接変更する機能)は隠す
・使える機能を制限することで他の人はどの機能を使えばいいかが分かりやすく、また、安全にクラスを利用することができる

publicとprivate
カプセル化とは、クラスのプロパティとメソッドへのアクセスを制限することを言う
・クラスの外部からアクセスできるようにするには「public」を、アクセスできないようにするには「private」を用いて定義する
・プロパティは基本的にアクセス権をprivateにする

ゲッター
プロパティのアクセス権をprivateにするとプロパティの値をクラスの外から取り出すことができなくなる
・そこで、プロパティの値を返すだけのメソッドを定義する
・このような、プロパティの値を返すだけのメソッドを特に「ゲッター」と言う
・ゲッターは「getプロパティ名」のように命名するのが一般的

14.注文個数を管理しよう

料理を注文できるようにしよう
料理を注文できるようにしていく
・orderCountというプロパティを追加して注文個数を管理できるようにする

セッター
プロパティのアクセス権をprivateにするとプロパティの値をクラスの外から変更できなくなる
・そこで、プロパティの値を変更するメソッドを定義する
・このようなプロパティの値を変更するメソッドを特に「セッター」と言う
・セッターは「setプロパティ名」のように命名するのが一般的

プロパティの初期値
$orderCountプロパティの初期値を0にする
・プロパティを定義する際には初期値をセットすることができる

15.フォームを作ろう

注文できるようにしよう
メニューごとに個数を指定して、注文できるようにしていく

フォームを作ろう
HTMLの<form>タグ、<input>タグを用いてそれぞれのメニューを、個数を指定して注文できるようにする
・ここでは<input>タグのname属性にMenuインスタンスのnameプロパティの値を指定する
(<input>タグのname属性を値を受け取るときに用いることはPHPⅠで学習した)

inputタグの初期値
<input>タグにvalue属性を用いると初期値を設定することができる
・初期値に指定した値がテキストボックスに最初から表示される

16.フォームの値を受け取ろう

注文確認ページを作ろう
ここからは注文確認ページを作っていく
・まずは、フォームから送信されたそれぞれのメニューの注文個数を受け取り、それを表示する

送信された値を受け取ろう
フォームで送信された値を「$_POST」で受け取れることはPHPⅠで学習した
・<input>タグのname属性はそれぞれのMenuインスタンスのnameプロパティなので、nameプロパティの値を用いて送信された値を受け取る

17.注文の小計を出そう

注文の小計を出そう
まずはそれぞれの注文個数($orderCount)と税込金額を用いて注文の小計を算出し、表示していく

$thisを用いたメソッドの呼び出し
「$this」を用いてメソッドにアクセスするのは初めてなので、「$this」について復習しておく
・$menuが$curryインスタンスのときを例に、getTaxIncludedPriceメソッドが呼び出される処理を確認する

18.注文の合計金額を出そう

注文の合計金額を出そう
・それぞれの小計から全メニューの注文の合計金額を算出し、表示する


いいなと思ったら応援しよう!