それは私が興味を持っていたものです。php mysqli では、未知のクラス名に対してアクション関数を実行できます。次に例を示します。
$res = $mysqli->query($query);
$res->fetch_array();
これは既知の fetch_array の名前ですが、res変数です。どのように実装されているか知りたいです。ずさんなグーグル翻訳でごめんなさい。
あなたの質問を正しく理解していれば、答えはメソッドmysqli::queryがクラスmysqli_resultのインスタンスであるオブジェクトを返すということです。このクラスにはメソッドがありfetch_array()
ます。
また、関数get_classに興味があるかもしれません。
この行の前:
$res = $mysqli->query($query);
確かにmysqli接続がありました:
$mysqli = new mysqli("localhost", "user", "password", "database");
これから、mysqli
PHP によって提供される準備ができているクラスは次のようになります。
class mysqli{
}
の$res
コピー$mysqli->query($query);
は次のとおりです。
これquery
はクラス (関数) のプロパティですmysqli
。(成功) の場合はリソース、失敗の場合は false である mysqli クエリの結果をコピーするためにこれを行います。
次のように組み合わせることもできます。
$row = $mysqli->query($query)->fetch_array();
print_r($row);
私の推測では
class MySQLi{
/* other code */
public function query($query){
// some code
return new MySQLiResult(); // Don't know if that's the real class name
}
}
そして、結果は次のようになります
class MySQLiResult{
public function fetch_array(){
return array();
}
}
私は架空のコードしか書いていないことに注意してください。クラス名が何であるか、私は本当に知りません。これは、どのように見えるかの大まかな見積もりにすぎません。