読者です 読者をやめる 読者になる 読者になる

事務員、プログラマーになる

事務員がプログラマーになりました。

抽象クラスで遊んでみる①

前回勉強したabstractは、クラスだけではなくてファンクションにも使えるようです。

PHP: クラスの抽象化 - Manual

abstractクラスのabstractなファンクションは、子クラスで定義を強制する。

何のために!?

もう、気になって気になって。
それで、無い知恵絞って「abstractな親クラスが子クラスにファンクション定義を強制して嬉しい事ってなんだろう」と考えてみた結果、もしかしたら、親クラスから子クラスのファンクションが呼べるんだろうか…という気になってきました。
私の脳みそでは「親クラスが子クラスに確実に存在するファンクションがわかる」ぐらいの嬉しい事しか思いつかなかったんだもの!

親クラス

abstract class TestOyaClass extends CI_Controller {

    abstract public function show();
    
    public function index(){
        $this->show();
        echo '呼べたみたい';
    }
}

お子様クラス

class OkosamaClass extends TestOyaClass {    
    public function show(){
        echo '呼べてますか?';
    }
}

呼べました。
お子様クラスのコントローラー名/indexで普通に呼べてしまいました。
そうなんだー!!!

これって便利なんじゃないのかな。

今のシステムは更新ボタンを押すと毎回確認画面が表示されるんですが、開発済みソースを見ると入力チェック以外はおんなじことをやってるんですよね。 ということは、確認画面を出す処理を親クラスに書いて、入力チェックするabstractなファンクションを作れば、毎回作るのは入力チェックだけでいいんじゃないんだろうか。

ということで、ちょっとabstractなクラスを作っていきたいと思います。