【VB.NETプログラマーから見たPHP】メソッドについて

PHP

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種類
  • クラスの継承が可能

コメント

タイトルとURLをコピーしました