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のクラス継承に数の上限はない。制限があるのは、君の想像力の方。
コメントを残す