#メソッドの呼び出し方法
クラスの中で定義されるメソッドは3種類の呼び出し方があります。
##1.インスタンスメソッドを呼び出す
クラスの普通の使い方です。基本はこのように使います。
<?php
/* 四角クラス */
class Square {
/* 面積計算 */
function calcArea($height,$width) {
return $height * $width;
}
}
//クラスをインスタンス化して使う
$sq = new Square();
//こういう形でインスタンス化したオブジェクトのメソッドを呼ぶ
$area = $sq->calcArea(40,30);
echo "area = $area ";
?>
##2.継承関係にある親のメソッドを子インスタンスが呼び出す
extendsという構文を使って、クラスの定義の時に親のクラスを継承させるところがポイントです。
子クラスのメソッドの中でparent変数を使い、親クラスのメソッドが呼べるのです。また子インスタンスは親のメソッドをインスタンスメソッドとして呼び出せます。
<?php
# 伝票クラス(親クラス)
class Denpyo {
private $title;
# 作成メソッド
function create($title) {
$this->title = $title;
}
# 印刷メソッド
function print() {
echo "This is Denpyo [TITLE]:" . $this->title . "\n";
}
}
# 伝票クラスを継承した納品書クラス(子クラス)
class Nohinsho extends Denpyo {
# 子クラス用の印刷メソッド
function print () {
//親クラスのprint()メソッドを呼び出す
parent::print();
echo "This is Nohinsho\n";
}
}
//呼び出し
# (子クラスをインスタンス化)伝票を納品書として作成
$n = new Nohinsho();
//こういう形で親クラスのインスタンスメソッドを呼ぶ
$n->create("納品書");
$n->print();
?>
継承とは既存のクラスをもとに新しいクラスを作る仕組みのことです。このとき既存のクラスをスーパークラスといい、新しいクラスをサブクラスといいます。スーパークラスを継承してサブクラスを作ると表現します。サブクラスが作られることを派生といいます。
サブクラスではスーパークラスで定義された変数やメソッドをコーディングすることなく持ち合わせています。
継承はオブジェクト指向言語の特徴のひとつで、開発効率(コーディングの手間と可読性、再利用性)を上げることを目的に考えられています。
上の例ではDenpyoクラスを継承したNohinshoはそれぞれprintという伝票印刷メソッドが用意されています。このときこのサブクラスのprintメソッドはスーパークラスのprintメソッドをオーバーライド(塗り替え)しています。一方createメソッドはオーバーライドされていません。継承によりDenpyoクラスのcreateメソッドを実装しているのと同じことになります。
##3.クラスメソッドを呼び出す
スタティック(静的)なメソッドを定義しそれを呼び出します。
<?php
class Circle {
public static function pi() {
return 3.14159;
}
}
$p = Circle::pi();
echo $p;
?>
インスタンス化せず(newせず)に使えるところがポイントです。
[<<PHP基礎(7)クラス]
(https://qiita.com/taka027/items/3802b7b48b881ab6f48e)
[PHP基礎(9)コンストラクタ>>]
(https://qiita.com/taka027/items/c1c49c8decd3cea7dbc4)