メシのタネ

メシのタネになる、Laravelや設計思想の技術配信サイト


【PHP】継承したクラスで変数を使う、メソッドを使う方法

, , ,

  1. Webプログラム
  2. PHP
  3. 【PHP】継承したクラスで変数を使う、メソッドを使う方法

parentはextendsで指定された名前をさします。parent::example()でPHPでは親クラスのメソッドを使う事が出来ます。変数を使いたい場合はprotectedでメンバ変数を作り、値を入れて、子クラスから普通に$thisでアクセスします。

<?php


class hoge {
	protected $a = "heeeeeeeeeeeeeeeeeeeeee";
	public function init() {
		echo "hello";
	}
}


class h2 extends hoge {
	public function a() {
		parent::init();
	}
}

class h3 extends hoge {
	public function a() {
		echo $this->a;
	}
}

class h4 extends hoge {
	public function a() {
		echo "4".$this->a;
	}
}

class h5 extends hoge {
	public function a() {
		echo "5".$this->a;
	}
}

class h6 extends hoge {
	public function a() {
		echo "6".$this->a;
	}
}

class h7 extends hoge {
	public function a() {
		echo "7".$this->a;
	}
}

class h8 extends hoge {
	public function a() {
		echo "8".$this->a;
	}
}

class h9 extends hoge {
	public function a() {
		echo "9".$this->a."<br />";
	}
}

class h10 extends hoge {
	public function a() {
		echo "10".$this->a;
	}
}

class h11 extends hoge {
	public function a() {
		echo "11".$this->a;
	}
}

$a = new h2();
$a->a();

$b = new h3();
$b->a();

$b = new h4();
$b->a();

$b = new h5();
$b->a();

$b = new h6();
$b->a();

$b = new h7();
$b->a();

$b = new h8();
$b->a();

$b = new h9();
$b->a();

$b = new h10();
$b->a();

$b = new h11();
$b->a();

1個のクラスに対して10個のクラスが並列に並んでる感じになると思います。勝手な想像で9回以上できないと思ってました。そんなことはありませんでした。つまり親は8人までしか養えないと思っていました。なんでだ。

——————————

🧓 謎のベテラン風コメント:

PHPの継承に「子クラスの数制限」とか無いです。思い込みというか、なんかアニメで育った?
クラスを何個作ろうが、親クラスの設計がしっかりしてれば全然問題ない。やらないほうがいいけど。

ポイント整理しとくね:

  • protected → 子クラスからアクセスできる変数やメソッドを定義するのに使う。privateだったらアクセス不可。
  • parent:: → 親クラスのメソッドを呼びたいときに使う。オーバーライドしたときに元の動作を補完したい場合によく使う。
  • PHPのクラス継承に数の上限はない。制限があるのは、君の想像力の方。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.