我有一个文件/类::方法(HelperAdmin.php/HelperAdmin::menuItem()),它从数据库中提取数据以生成主菜单和子菜单。我必须在生成菜单后获取此数据,但我不想调用此方法两次。所以我在 HelperAdmin 类中创建了一个静态数组。它看起来像这样:
class HelperAdmin {
static $arrMenuItems;
...
public static function menuItem() {
....get $items....
self::$arrMenuItems = $items;
return $items;
}
....
}
但这里有一个问题。如果我再次调用 METHOD:
$items=HelperAdmin::menuItem();
...我可以获取数据。另一方面,如果我尝试通过静态数组获取数据:
$items=HelperAdmin::$arrMenuItems;
...它只是返回空值。
我希望看到一些想法。毕竟,如果你认为在这里使用静态变量(从 Yii 架构视图)不是最好的解决方案,我想听听你的建议!
@bool.dev:好的,想象以下方案:1.我们有主文件
/modules/admin/views/layouts/admin.php
这本质上是我们的后端模板。2.我们这里有助手:
/modules/admin/components/HelperAdmin.php
其中包含: * 类 HelperAdmin、* menuItem() 方法和 * 类静态数组 $arrMenuItems。通过调用 HelperAdmin::menuItem() 返回此 ARRAY 的内容。我们希望从 HelperAdmin 类中获取数据两次: 1. 在admin.php中生成菜单时;2. 作为内容的一部分,我们使用变量$content将其放在此文件中。$content 又在另一个文件中生成:
/modules/admin/views/generator/index.php
如您所见,我们的页面由模板文件 /modules/admin/views/layouts/admin.php 和从 /modules/admin/views/generator/index.php 获取的数据 ($content) 组合而成。首先我得到菜单的数据:
HelperAdmin::menuItem();
$items=HelperAdmin::$arrMenuItems;
$this->widget(....
'items'=>$items,
...),
));
没关系。请注意,在此之后已经在 HelperAdmin 中生成了一个静态数组 $ arrMenuItems 。接下来,我尝试在文件 /modules/admin/views/generator/index.php 中获取相同的数据(之前生成的 $arrMenuItems),以将其放置为$content:
$items=HelperAdmin::$arrMenuItems
在这里我无法得到它,如上所述。好吧,我希望它使情况更清楚(?)。