为什么只有mysqli_query的过程样式需要$ link参数?

时间:2017-08-25 21:48:49

标签: php mysqli

参考:http://php.net/manual/en/mysqli.query.php

mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

 link
 Procedural style only: A link identifier returned by mysqli_connect() or mysqli_init()

所以,问题是为什么只有mysqli_query的程序风格需要$ link参数?

1 个答案:

答案 0 :(得分:1)

mysqli是一门课。无论您使用new mysqli()还是mysqli_connect()实例化它,结果都是mysqli类的对象。

过程样式函数只是类方法的瘦包装,以便能够从mysql_* API更快地进行迁移。事后看来,这可能不是一个聪明的主意。您可以像这样大致想象这些功能:

function mysqli_query(mysqli $link, string $query, int $resultmode = MYSQLI_STORE_RESULT) {
    return $link->query($query, $resultmode);
}

在内部,它们在提供的对象上触发相同的方法,但是您无需调用方法,而是调用函数并将该对象作为第一个参数传递。