这是我很好奇的事情。在 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
类(一个函数)的一个属性,我们这样做是为了复制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();
}
}
请注意,我只写了虚构的代码。我真的不知道,类名是什么。这只是对其外观的粗略估计。