只调用一次方法

Calling a method only one time

我在自定义框架中工作。

我有一个 class:

<?php

class group extends \something\some
{
  public function mymethod() {
     //code
     return $output;
  }

  public static who() {
    //I've a DB query here returning an array
    return $query-result;
  }
}

然后在前端页面中我有:

$group = new group();
foreach ($users as $user) {
      //mycode
      $who = $group::who();
}

但是通过这种方式我生成了 num users x 1 queries,20 个用户 20 个查询。

我只能在 foreach 内部挂钩,然后我想知道如果我在 foreach 内部调用这个数组(who() 方法)是否有办法只获取一次。

您可以将数据库的结果保存在方法内的静态变量中(或在 class 中)。尚未加载时,您只需填充一次。任何未来的调用都将使用已经获取的数据。代码看起来像这样(来自 `static` keyword inside function? 的回答):

function doStuff() {
    static $cache = null;

    if ($cache === null) {
        $cache = '%heavy database stuff or something%';
    }

    // code using $cache
}