1

4 つのクラスがあります Main SQL Template Member 。クラスを延長したいと思いSQL Templateます 。しかし同時に、すべてのクラスを同時に呼び出すことも、すべてを同時に要求することもできないようにしたいと考えています。MemberMain

したがって、私のindex.phpファイルでは、 Mainandを呼び出しますTemplate
私のページでは、 、、およびregister.phpを呼び出します。私のページでは、 、およびを呼び出します。MainTemplateSQLMember
submit.phpMainSQLMember

私はこのようなクラスを持っています:

------ Main Class------

<?php

public $db;

class Main {

    public function __construct(){
    }
    public function One(){
        // here I would call Two, Three, and Four if available
    }
}


------ SQL Class------

<?php
class SQL extends Main {
    public function __construct(){
        parent::__construct();
        $this->db = new mysqli(....);
    }
    public function Two(){
        $this->db->query(.....);
        // Fetch query code
        echo $result;
    }
}


------ Template Class------

<?php
class SQL extends Main {
    public function __construct(){
        parent::__construct();
        $this->db = new mysqli(....);
    }
    public function Three(){
        $this->db->query(.....);
        // Fetch query code
        echo $result;
    }
}


クラスは他のMemberクラスと同じで、関数は4つです..

だから、これが私がやっている方法ですが、子クラスから関数を呼び出すことはできず、メインからのみ関数を呼び出すことができます.

これを行うより良い方法を教えてください。前もって感謝します。

4

3 に答える 3

1

Main クラスに Two()、Three()、Four() を実装します。彼らは必ずしも何もする必要はありません。その後、Main 内からそれらを呼び出すことができます。それらは、One() を呼び出しているクラスのオーバーライドされた関数に実装されていることを実行します。

于 2013-10-15T22:00:50.020 に答える
1

これらのクラスにメイン クラスを継承させないでください。SQL、テンプレート、およびメンバーには、あまり共通点がありません。そのため、共通のクラスMainを拡張するべきではなく、独自のものにする必要があります。共通のマスタークラスは、後で物事をより複雑にします.

複数のクラスがデータベース アクセスを必要とする状況があります。これは、構成が機能するときです。クラスはMember、データベースに対して読み書きできる必要があります。オブジェクトを作成して、SQLそれをオブジェクトに渡す必要がありMemberます。Templateテンプレートもデータベースに保存されている場合、同じことがクラスに適用されます。

ここでの私の問題は、良いオブジェクト指向プログラミングのすべてに踏み込むことができないということです。これは本をいっぱいにしてしまい、ここ Stackoverflow の質疑応答形式には適していないからです。したがって、このトピックについてもっと読み、神のオブジェクト パターンを避けるように提案することしかできません。

于 2013-10-15T23:08:45.760 に答える