猿问

只调用一次方法

我在自定义框架中工作。


我有一堂课:


<?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 个用户 x 1 个查询,其中 20 个用户有 20 个查询。


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


holdtom
浏览 186回答 1
1回答

慕容森

您可以将数据库中的结果保存在方法(或类)内的静态变量中。当它尚未加载时,您只填充一次。任何未来的调用都将使用已经获取的数据。代码看起来像这样(来自函数内的`static`关键字的答案?):function doStuff() {&nbsp; &nbsp; static $cache = null;&nbsp; &nbsp; if ($cache === null) {&nbsp; &nbsp; &nbsp; &nbsp; $cache = '%heavy database stuff or something%';&nbsp; &nbsp; }&nbsp; &nbsp; // code using $cache}
随时随地看视频慕课网APP
我要回答