🐘

【PHP】クラスと関数の書き方

2023/04/22に公開

当記事は、人に伝えるためにまとめた台本です。
厳密な部分は端折ってたりします。

クラスとは

オブジェクト指向における、基礎となる考え方です。

始めに難しい感じで行きますが、後半にかけて噛み砕いて解説していきます。

まず難しい言い方をすると『クラスとは、オブジェクトの雛形となる設計図のこと』です。

そのクラスは、ざっくり以下のような構成です。これ以上でもこれ以下でもないです。

  • クラス
    • プロパティ(変数)
    • メソッド(関数)

そしてそのクラスのコンストラクタによって、インスタンスが生成されます。そのインスタンスが実際に使われるデータになります。

ここからは、イメージしていきましょう。段階的に考えていきます。

クラスの概観

クラスは、よく「鋳造」で例えられます。

たい焼きを想像してみましょう。

たい焼きは以下のような要素で構成されています。

  • 生地
  • 中身のあん

ここでクラスは設計図、つまり金型と同じものになります。

そして、「生地」と「中身のあん」は、プロパティと同等のものになります。

  • クラス=たい焼きの型
    • プロパティ=生地
    • プロパティ=中身のあん

  • インスタンス=たい焼き🐟

たい焼きの型に生地を注いで、あんを入れて、焼き上げる。。。

クラスにプロパティを代入して、インスタンスを作る。。。

こんな感じです(伝われ)

プロパティについて

プロパティは変数です。つまり言い換えれば、たい焼き(クラス)の構成要素ですね。

ですので、自由自在です。

  • 生地プロパティ
    • 普通の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; 
    }
}
?>

参考

クラスの基礎

ユーザー定義関数

GitHubで編集を提案

Discussion