0

タイトルが示すように、私は次のような状況にあります。

require_once("connect.php") //database connection file

class one {

    private $mysqli;

    function __construct ($dbi) {
        $this -> mysqli = $dbi;
    }

    function one {
        // ... function using things like $this -> mysqli -> prepare and so on...
    }
}

そして、同じファイルで:

class two {
    private $mysqli;

    function __construct ($dbi) {
        $this -> mysqli = $dbi;
    }

    function two {
        // here I need to access the function "one" of the class "one"
        // If i do something like $one = new one ($mysqli) I get an error on the __construct
    }
}

私はこれに本当に腹を立てていますが、私は PHP の OOP の初心者なので、それほど難しくないと思います。誰かが私を助けてくれることを願っています。

4

2 に答える 2

1

mysqliの問題を無視すると、次のようになります。

$one = new one ($this->mysqli);

$two = new two($this->mysqli);
$two->two($one->one); // call pass function from one into two

2の宣言を次のように変更します

function two($functiontorun) {

現在、私はphpでもOOプロではありません(コンパイルされていない言語の順序が狂っていないという点はわかりません)が、クラス2をクラス1のEXTENDSとして使用することで、これを解決できると思います。クラス1をパブリックにして関数1をパブリックにすると、クラス1が事前にetcでインスタンス化されている限りnew one、関数2の内部で呼び出すことができるはず$one->one(); ですが、私はその1つに100%ではありません

于 2013-02-28T16:50:57.053 に答える
1

あなたの質問を理解しているかどうかはよくわかりませんが (すべての MySQL のもののため)、メソッド (= オブジェクト内の関数) へのアクセスはpublicキーワードを使用して与えることができます:

    public function functionName( $parameter ) {
        \\ function stuff
    }
于 2013-02-28T16:51:56.837 に答える