【PHP】クラスと関数の書き方
当記事は、人に伝えるためにまとめた台本です。
厳密な部分は端折ってたりします。
クラスとは
オブジェクト指向における、基礎となる考え方です。
始めに難しい感じで行きますが、後半にかけて噛み砕いて解説していきます。
まず難しい言い方をすると『クラスとは、オブジェクトの雛形となる設計図のこと』です。
そのクラスは、ざっくり以下のような構成です。これ以上でもこれ以下でもないです。
- クラス
- プロパティ(変数)
- メソッド(関数)
そしてそのクラスのコンストラクタによって、インスタンスが生成されます。そのインスタンスが実際に使われるデータになります。
ここからは、イメージしていきましょう。段階的に考えていきます。
クラスの概観
クラスは、よく「鋳造」で例えられます。
たい焼きを想像してみましょう。
たい焼きは以下のような要素で構成されています。
- 生地
- 中身のあん
ここでクラスは設計図、つまり金型と同じものになります。
そして、「生地」と「中身のあん」は、プロパティと同等のものになります。
- クラス=たい焼きの型
- プロパティ=生地
- プロパティ=中身のあん
⏬
- インスタンス=たい焼き🐟
たい焼きの型に生地を注いで、あんを入れて、焼き上げる。。。
クラスにプロパティを代入して、インスタンスを作る。。。
こんな感じです(伝われ)
プロパティについて
プロパティは変数です。つまり言い換えれば、たい焼き(クラス)の構成要素ですね。
ですので、自由自在です。
- 生地プロパティ
- 普通のHM生地
- キャッサバ入りのモチモチ生地
- クロワッサン生地
- 餅の生地
- 抹茶入りの生地
- ココア入りの生地
- etc
- あんプロパティ
- つぶあん
- こしあん
- 栗あん
- 白あん
- さくらあん
- チョコクリーム
- カスタード
- ハンバーグ
- ハムマヨネーズ
- etc
このように、プロパティに入る値は様々です。
また、補足すると、生地とあんだけでなく、大きさや厚さ、製造場所、形(築地にはマグロ型もあるみたいですね)、賞味期限、値段などもプロパティの一種になり得ます。
関数とは
関数は『入力値に対して定められた処理を実行し結果を返す』ようなものです。
クラスの中にも置けるし、好きなところに置けます(厳密には違うけど)
人間もある意味「関数」であると言えます。
「ばーか!」と言われた場合、「ばーか!」という入力値を受け取ったことと同等です。
そして脳内で処理し、「馬鹿っていうほうが馬鹿だし!」と言った場合、それは出力結果と同等です。
これは人によって様々です……つまり、人それぞれ関数の定義は異なるってことですね。
さて、たい焼きでいう関数はなんでしょうか。
持っているプロパティを使ってやることが多いです。
例えば、値段を計算する関数。
- ベース価格:150円
- ハムマヨネーズの場合:+30円
- 生地がクロワッサンの場合:+50円
このように処理することも可能です。
実際にクラスと関数を書いてみる
<?php
class Taiyaki {
/* ---- プロパティ ---- */
public $inside = 'つぶあん';
public $dough = 'HM';
/* ---- 関 数 ---- */
public function price() {
$price = 150;
if ($inside === 'ハムマヨネーズ') {
$base_price += 30;
}
if ($douht === 'クロワッサン') {
$base_price += 50;
}
return $price;
}
}
?>
Discussion