$this->の構成物
$this
今このクラスから生まれたオブジェクト自身
を指す特別な変数のこと。
->
オブジェクトの中身にアクセスするための記号
オブジェクト -> プロパティ もしくは メソッド
$this->name = 〇〇;
$this-> の使用例
class Games {
public $title; //プロパティ(オブジェクトが持つ「属性」)
public function setTitle($title){
$this->title = $title; // オブジェクト自身の $name に代入
}
}
コード自体をゲームソフトの箱に例えてみます。
class Games {} //Gamesというクラス 「ゲームソフトの設計図」
※この時点ではまだ実物が存在しない。
public $title; //「title」という タイトルを書くための空欄を作る
// アクセス権は「public」なので クラスの{}の外側
からでも呼び出せる
┌─────────────────┐
│ タイトル:___ │ ← $title(空欄)
└─────────────────┘
public クラスの{}外側からでも呼び出せる(使える)
※外側というが、別ファイルから参照などはできない
参照するにはrequire includeで読み込む
| クラスの外 | 子クラス | クラスの中 | |
|---|---|---|---|
public |
✅ | ✅ | ✅ |
protected |
❌ | ✅ | ✅ |
private |
❌ | ❌ | ✅ |
public function setTitle($title){
} //タイトルを記入するペンを用意します
//$title は何を書くかを受け取る一時的なメモのようなもの
$this->title = $title;
//一時メモ($title)の内容を箱の欄($this->title)に書き写す
一時メモ セーブデータ(箱)
$title $this->title
"ドラクエ" →→→ タイトル:ドラクエ
$this->と普通の関数との比較
① $name = "めたっぴ" ── 戦闘中の一時的な計算
function attack() {
$damage = 50; // ダメージ計算
echo "50ダメージ!";
}
// 戦闘が終わったら $damage は消えてしまう。
⚔️ 戦闘中に「会心の一撃でダメージ50!」と表示されるけど、
戦闘が終わったら何も残らないイメージ
セーブデータには書き込まれない
② $this->name ── セーブデータへの書き込み
class Hero {
public $name;
public $level;
public $hp;
public function setUp($name) {
$this->name = $name; // セーブデータに名前を登録
$this->level = 1; // レベルも保存
$this->hp = 100; // HPも保存
}
public function levelUp() {
$this->level += 1; // 別の場面でもセーブデータを更新できる
$this->hp += 50;
}
public function showStatus() {
// どのメソッドからでもセーブデータを読めますわ✨
echo $this->name . " Lv." . $this->level . " HP:" . $this->hp;
}
}
$hero = new Hero();
$hero->setUp("めたっぴ");
$hero->levelUp();
$hero->showStatus(); // → めたっぴ Lv.2 HP:150
💾
setUp()で書いたデータをshowStatus()でも読める。
セーブデータはどの場面からでも参照できる
比較まとめ
$damage = 50 |
$this->hp = 100 |
|
|---|---|---|
| ゲームで言うと | 戦闘中のダメージ計算 | セーブデータへの書き込み |
| どこに保存? | 戦闘(関数)の中だけ | セーブデータ(オブジェクト)の中 |
| 他のメソッドから見える? | ❌ 戦闘終わったら消える | ✅ どの場面でも読み込める |
| いつ消える? | 戦闘終了(関数終了)時 | データ削除(オブジェクト破棄)時 |
$this->= 「このキャラクターのセーブデータに書き込む」
$変数= 「戦闘が終わったら消えるダメージ計算」