清晰的代码

时间:2012-06-27 06:35:56

标签: php mongodb

只是寻找某些代码的清晰度。

我正在查看一个Controller类,它有一个名为$ grid的受保护变量,里面有一个__construct函数连接到MongoDB,之后就有这个代码:

$this->grid = $mongo->selectDB($database)->getGridFS();

继续在另一个类和方法的脚本中,我有代码

 foreach ($this->grid->find() as $file) {

我是否正确地认为foreach正在使用第一个定义的$ this->网格是$ monmgo-> selectDB?

非常感谢

1 个答案:

答案 0 :(得分:0)

值得在PHP5 objects and classes上阅读__construct()$this,方法调用链是PHP中基本的面向对象的实现概念。

PHP方法调用在您的代码示例中被链接,这意味着一个方法的结果将被传递到下一个方法(从左到右)。

 $this->grid = $mongo->selectDB($database)->getGridFS();

所以这段代码执行:

  • $mongo->selectDB($database) ..选择名称为($ database)的数据库;假设$ mongo已成功连接Mongo object
  • 现在,在所选数据库上调用getGridFS()
  • 最后,将最后一个方法调用(getGridFS())的结果分配给变量$this->grid

$this->grid最终会成为新的MongoGridFS对象(基于getGridFS()的返回类型。

foreach正在迭代MongoGridFS对象find() method的结果,该对象将是MongoGridFSCursor