かわろぐ

ITビジネス、ガジェット、メディア、経済、子育て、遊び、飯とかなんでも配信していくよ。WordPress関連の記事はメモ感覚で書いてるので、乱文で失礼仕り候。ガジェ通とかにも記事提供してるので、よろしくね!

PHPのClassとFunctionを分かりやすく解説してみる

LINEで送る
Pocket

PHPユーザーが最初に当たる壁「オブジェクト指向」的なやつ

PHP_Logo

PHPでのオブジェクト志向といえばClassとFunctionですよね。「オブジェクト指向やろうね~」とか「オブジェクト指向簡単だよ~」みたいな記事は多々あれど、「ClassとFunctionを使うと何がいいの?何ができるの?」とか、そういうことを分かりやすく書いてるとこは意外に少なかったりします。

なので個人的な復習も含めて「ClassとFunctionで何ができるのか」というClassやFunctionの基礎中の基礎をできるだけ分かりやすく書ければなと思います。

私くしはClassやFunctionの基本理念は「変数を乱雑に並べていくのではなく、棚や箱に整理整頓しておく」ってことだと思っています。

まずはPHPの基本

この記事を読んでる方は「PHPでのオブジェクト指向を理解したい」って方だと思うので、理解していると思いますが、そもそもPHPってのは、上から下に向かって処理していくもんですよね。

php_object001例えばこんなふうにドライバーが並んでたとします。先ほど書いた通り、PHPは上から下に処理していくので、最後に$driverには「青いドライバー」が代入されますよね。

Echoを「取ってきて!」って意味だとします。先ほどの「PHPの基本」で書いた通り、PHPでは上から下に向かって処理をするので「取ってきて!」って言われた場所の直ぐ手前にある$driver(青いドライバー)を取ってきてくれます。

$driver="赤いドライバー";
$driver="青いドライバー";
echo $driver;

Functionでできること

php_object0000では次はFunctionです。私くしの中ではFunctionは箱だと思ってます。先ほどのように変数に代入していくだけだと、直近のすぐ手前の$driverを取ってきてくれますよね。

しかし、Functionという箱の中に入れてあげることができるんです。要は乱雑に置いてくのではなく、箱に入れて整理できるってことですね。

$driver='赤いドライバー';

function RedBox(){
	$driver='青いドライバー';
	return $driver;
}

//ドライバー取ってきて!とお願いした場合、普通に赤いドライバーを取ってきてくれます
echo $driver;

//赤い箱の中身を取ってきて!とお願いすれば青いドライバーを取ってきてくれます
echo RedBox();

Classでできること

php_objectさて、Functionは箱だと説明しましたが、今度はClassです。私くし的にはClassは棚だと考えています。

例えば赤い箱(RedBox)が複数ある場合だと「赤い箱の中身取ってきて!」とお願いしても赤い箱がいくつもあるので、どの赤い箱やねん!とエラーを返されてしまいます。

そこで、Classを使って棚の上段にある赤い箱の中身」としてあげることができます。

$driver="赤いドライバー"

function RedBox() {
	$driver="青いドライバー";
	return $driver;
}

class FirstStage {
	function RedBox() {
		$driver="緑色のドライバー";
		return $driver;
	}
}

//ドライバー取ってきて!とお願いした場合、普通に赤いドライバーを取ってきてくれます
echo $driver;

//赤い箱の中身取ってきて!とお願いしてるので、青いドライバーを取ってきます
echo RedBox();

//上段にある赤い箱の中身取ってきて!とお願いしてるので、緑色のドライバーを取ってきます
echo FirstStage::RedBox();

ClassやFunctionを使うメリット①

私が思うClassやFunctionのメリットは変数が書き換わらないところが一番おおきいかなと思っています。たとえば、複数人でスクリプトを編集しなければいけない場合や、既存のスクリプトを修正しなければいけない場合など、どんな変数が使われているか分からない場合がありますよね。

そういう時に「変数が書き換わらない」というのは大きなメリットだと思います。

ClassやFunctionを使うメリット②

二つ目のメリットは「変数を乱雑に並べていくのではなく、棚や箱に整理整頓しておく」ので、あの棚のあの箱の中身を取ってきて!ってことができます。例えば...


//上から見てきたけどドライバーなんて無かったよ?となる
echo $driver;

//オッケー!赤い箱探してくるわ!となる
echo FirstStage::RedBox();

$driver="赤いドライバー"

function RedBox() {
	$driver="青いドライバー";
	return $driver;
}

変数は置き換えられてどんどん変わって行ったりしますし、単純に上から並べていくだけだと、どこの変数を取ってきたらいいのか分からないので、直近の手前の変数を取ってくるしか無いのですが、ClassやFunctionを使って整理整頓することで、箱を後に置いていても、その箱を取ってきてくれるわけです。

もちろん、ClassやFunctionを入れ子にすることで、あの小屋にある真ん中の棚の下段の中身を...なんてこともできます。

HTMLでいうところのIDとClassを足して2で割った感じに近いのかなぁ?

さいごに

と、こんな感じでPHPのClassやFunctionについて、できるだけ分かりやすく説明してみました。

PHPでのオブジェクト志向で悩んでる方が読んでみてくれたら嬉しいっす。

 

 

 

LINEで送る
Pocket

-PHP
-