phpでメソッド分割を行う方法を調べました。
この記事を読むと3つの事について理解出来る様になります。
メソッドとは
メソッドはクラス内の関数を指します。
以下にサンプルを示します。
<?php
//クラス定義
class test{
public function testA(){
echo "testA";
}
}
//インスタンス生成
$a = new test();
//メソッド実行
$a->testA();
?>
testクラスを生成し、testAメソッドを呼び出す処理を実行しています。
アクセス修飾子
phpでは3種類のアクセス修飾子があります。
public
クラス内、クラス外のどこからでもアクセス可能なメソッドです。
private
同じクラス内からのみアクセス可能なメソッドです。
protected
同じクラス、及び継承先クラスからアクセス可能なメソッドです。
実装確認
ロジックを作成して、動作を確認してみます。
<?php
//クラス定義
class test{
public function testA(){
echo "testA"."\n";
$this->testB();
$this->testC();
}
private function testB(){
echo "testB"."\n";
}
protected function testC(){
echo "testC"."\n";
}
}
//インスタンス生成
$a = new test();
//メソッド実行
$a->testA();
?>
testクラスの外からはtestAのみ参照可能とです、testB、testCはクラス外からのアクセスが出来ないが、クラス内からのアクセスは$thisの修飾でアクセスが可能となります。
自クラスのメソッドを呼び出す場合は、「$this.」と記述するのがポイントです。
<?php
//クラス定義
class test{
public function testA(){
echo "testA"."\n";
$this->testB();
$this->testC();
}
private function testB(){
echo "testB"."\n";
}
protected function testC(){
echo "testC"."\n";
}
}
//継承クラス定義
class test2 extends test{
public function testA(){
echo "testA2"."\n";
$this->testB();
$this->testC();
}
private function testB(){
echo "testB2"."\n";
}
protected function testC(){
parent::testC();//継承元のメソッドを呼びだす
echo "testC2"."\n";
}
}
//継承クラスのインスタンス生成
$a = new test2();
//メソッド実行
$a->testA();
?>
test2クラスがtestクラスを継承していて、testAメソッドからtestCメソッドを呼び出しています、testクラスのtestCメソッドを呼び出して、その後自メソッドの処理を実行しています。
継承元のメソッドを呼び出す記述は「parent::」と記述するのがポイントです。
クラスを継承する場合は「extends」で継承元クラスを定義します。
まとめ
- メソッドはクラス内に記述
- メソッド・変数のアクセス修飾子は3種類
- クラスの継承が可能
コメント