我正在使用自定义框架。
我正在上课:
<?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内调用它也可以。
答案 0 :(得分:1)
您可以将数据库中的结果保存在方法(或类)中的静态变量中。尚未加载时,只需填充一次。以后的任何调用都将使用已经获取的数据。代码看起来像这样(来自`static` keyword inside function?的答案):
function doStuff() { static $cache = null; if ($cache === null) { $cache = '%heavy database stuff or something%'; } // code using $cache }
答案 1 :(得分:-1)
我不确定这是最好的方法,但是对于从前端静态调用框架控制器函数如此坚持,您最好的方法是在foreach循环上方(在前端)添加变量或添加数组,然后将其设置为静态函数调用。再说一次,不是我的方式,但是可以解决您的问题。
$group = new group();
$someVariable = '';
foreach ($users as $user) {
$someVariable = $group::who();
}