0

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

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

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

进一步在另一个类和方法的脚本中我有代码

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

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

非常感谢

4

1 回答 1

0

值得一读PHP5 对象和类,因为__construct(),$this和方法调用链是 PHP 中基本的面向对象实现概念。

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

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

所以这段代码执行为:

  • $mongo->selectDB($database) .. 选择具有名称的数据库 ($database); 假设 $mongo 已成功连接Mongo 对象
  • 现在,在选定的数据库上调用getGridFS()
  • 最后,将最后一次方法调用的结果 ( getGridFS()) 赋值给变量$this->grid

$this->grid最终会成为一个新的MongoGridFS对象(基于getGridFS().

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

于 2012-06-27T08:32:07.010 回答