まえがき
PHPのクラスとインスタンスについて書こうと思います。
よく、クラスは設計図でインスタンスは出来上がったもの。みたいな解説を見ます。
これの意味が全く理解できず沼ったので、同じように沼った方の助けになれば。なんとなく理解した後であればわからなくもない表現ですが...。
クラス
PHPにおけるクラスとは
class Xxx{
}
これがクラスです。
- class と宣言をし
- xxx クラスに名前をつけます
- {} の中にクラスの素材をいれていきます
じゃあクラスって何いれんの? となりますが基本的に入れるのは 変数 と 関数 この二つです。
なんでいれるの?って話ですが...
規模によっては、関数や変数の数が1000以上あったりします。とんでもない数です。
関数を改造したりと管理しやすいように、似た機能のものなどでグループ分けします。
SNSなどを例にすると
- ログインログアウトアカウント作成などの認証クラス
- 文字や写真を投稿するクラス
- お気に入りや拡散などオプション系のクラス
- などなど
このようにまとめておけば管理がしやすいですね。変数や関数をグループに分けて管理しやすくするための概念です。
クラスに変数や関数を入れる方法
class Zzz{
public $xxx;//変数の定義
public function hensuu() {
return $this->xxx;
}//関数の定義
}
クラスの中に直接書き込めば定義できます。
いくつか補足
- クラス名「Zzz」最初の文字は大文字にする必要があります
- クラス内では$xxxは「変数」ではなく「プロパティ」と呼びます
- 関数は「メソッド」と呼びます
- 「$this」は 同じクラス内と言う意味 class Zzz を指します。直後に「→」でZzzクラスの中のプロパティやメソッドにアクセスできます
クラスの中の変数や関数を使う方法
クラスの中の関数や変数を使う方法。
先ほど作ったZzzクラスの$xxxに値を入れて、その後hensuu()メソッドを使ってみましょう
class Zzz{
public $xxx;
public function hensuu() {
return $this->xxx;
}
}
$class = new Zzz();//$classにZzzクラスが入る
$class -> xxx = "プロパティに文字入れるよ";//$xxxに文字列が入る
echo $class -> hensuu();//ここでhensuuメソッドが使用できている
//xxx に"プロパティに文字入れるよ"が挿入され、hensuuによってreturnされxxxがechoされる
//変数にアクセスする方法も関数と同じで「->」を使う
echo $class -> xxx;
適当な変数に「new」と、直後にクラス()を書いて代入してあげれば、変数にクラスがぶち込まれます。
それ以降変数に「->」を使ってあげれば変数と関数にアクセスできます。
変数にクラスが入ること → クラスをインスタンス化する
クラスが入っている変数 → 変数とは言わない「オブジェクト」
クラスの中に存在する変数関数 → プロパティ メソッド
-> この右矢印は「アロー演算子」と言う
クラスをインスタンス化するとき(変数にクラスを入れる時)は、クラスの名前をそのまま変数名にしてあげると後々何が入っているかわかりやすいです。
$zzz = new Zzz();
$zzz -> hensuu();
なんで設計図と出来上がったものと例えるか
アプリなどを作る上での関数は、DBからいろんなデータを持ってきたり、繋げたりいじったりします。
変数はそのクラス内でいろんな値が挿入されます。(ユーザーの名前とかIDなど)
おそらくプロパティ(変数)が材料に見え、あれこれするから設計図というような例えになったのかと思います。
あとがき
まだ初学者の域にいるような者が書いた稚拙な文章なので間違いがあった場合は申し訳ございません。ご容赦ください。
PHPのレベルが0の方が1になるための手助けになればと思い書きました。同じ初学者の視点だからこそ助けになるものもあるかと思います。参考にされば幸いです。
次はクラスの関係、いわゆるクラスの継承や親子クラスなどを解説できたらと思います。