PHPの基本:$thisとコンストラクタ

こんにちは、ちゃんけいです。
最近ゲーム実況を始めました、結構一人でしゃべるのは楽しいです。

前回はプロパティとメソッドについて紹介しました、ごっちゃになりやすいので注意が必要ですね。
さて今回$thisとコンストラクタについて書いていこうと思います。それではいきましょー!

$this

メソッド内で、同じクラス内のプロパティの情報を持って来たい時に使うのが$thisになります。

すこしわかりづらいかもしれませんが、実際のコードをみていきましょう。


<?php 
class Kamigata{
	public $name; // プロパティ
	public function changeHair(){ // メソッド
		echo '髪型を'. $this->name .'に変えますか?'; // $thisを使ってプロパティにアクセス
	}
}

$hoge = new Kamigata(); // インスタンス作成
$hoge->name = 'ポニーテール'; // nameプロパティに代入
$hoge->changeHair(); // メソッドを呼び出し

// 出力結果
髪型をポニーテールに変えますか?

?>

プログラムの流れはつかめたでしょうか?
プロパティに代入した値を呼び出せるので結構登場回数が多いのではと思います。

コンストラクタ

インスタンス作成時に、自動的にやってほしい処理が出てくるかと思います。このインスタンス作成時に呼ばれるメソッドのことをコンストラクタと言います。
そんなコンストラクタの書き方はこちら


<?php 
// クラス
class Kamigata{
	public $name; // プロパティ
	public function changeHair(){ // メソッド
		echo '髪型を'. $this->name .'に変えますか?'; // $thisを使ってプロパティにアクセス
	}

	public function __construct() { // 「__construct」でコンストラクタを定義できる
		echo 'ポニーテールが好きです。';
	}
}
?>

上記のコードの場合、インスタンスを作成するだけで「ポニーテールが好きです。」とサイト上に表示されることになります。

コンストラクタの引数とプロパティ

コンストラクタはわかったけど具体的に何ができるの?と思った方もいるかと思います。
コンストラクタは引数を扱うことができ、さらには$thisを使いプロパティに値を代入することができます。実際にどうなるかというとこちら


<?php 
class Kamigata{
	public $name; // プロパティ

	public function __construct($name) { // 引数を設定できる
		$this->name = $name; // 引数をプロパティに設定
		echo '今の髪型は' .$this->name. 'です。';
	}
}

$hoge = new Kamigata('ポニーテール'); // インスタンス作成
?>

これで簡単にインスタンスを作成するだけで初期値の設定ができるようになりました。便利。

まとめ

いかがでしたでしょうか?コンストラクタを使うことで毎回別で定義していた初期値が1回呼び出すだけでセットできるようになりますね。
例ではプロパティが1つですが、これが5個も6個もになってくると真価を発揮すると思います。

それでは今回はこの辺で、また次回の記事でお会いしましょう。ちゃんけいでした。