【发布时间】:2019-09-24 04:20:48
【问题描述】:
我正在使用自定义框架。
我有一堂课:
<?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 个查询,有 20 个用户 20 个查询。
我只能在 foreach 中进行挂钩,然后我想知道是否有一种方法可以只抓取一次这个数组(方法 who()),如果我在 foreach 中调用它。
【问题讨论】:
-
除了语法错误,我不明白为什么你不能在foreach上面调用
who()? -
有一个挂钩系统,我可以使用它来扩展框架功能,并且在 foreach 之外没有挂钩。
-
对我来说没什么意义,你不能在循环之外调用它。当你这样做时会发生什么?你甚至没有给
who方法提供任何东西。 -
我正在开发插件,但无法编辑框架文件。出于这个原因,我只能在有 HOOK 的循环内部进行挂钩。显然,如果我编辑框架文件并在 foreach 之外调用 who() 它可以工作,但我不能以这种方式编辑代码。
-
我仍然没有看到钩子在显示的代码中以任何方式发挥作用。除非您使用
//mycode注释跳过的位与$group一起做任何事情,否则根本没有理由不能将$who行移到foreach之外。除非foreach循环本身在您无法编辑的框架文件中?似乎并非如此,因为那是您表明您拥有“我的代码”的地方。也许显示更多代码会有所帮助?这当然不是 MCVE。