【发布时间】:2016-06-30 11:04:33
【问题描述】:
我正在尝试创建一个 xml 文件来存储某个角色和区域内的用户应该能够看到的项目列表,然后使用 PHP 对其进行解析以检索此列表。
因此,如果用户从某个 $area 登录,则将首先检查该区域,如果该区域不在 xml 中,则将其忽略。
用户一次只能在一个 $area 中,所以如果当前的 $area 匹配,我需要检查他们当前的 $role 是否匹配,一个用户可以拥有多个角色。
然后应该为用户可以看到的项目构建一个列表,其中只有唯一的项目。
XML 结构如下所示:
<?xml version="1.0"?>
<permissions>
<area name="accounts">
<role name="user">
<item>item1</item>
<item>item2</item>
</role>
<role name="manager">
<item>item1</item>
</role>
</area>
<area name="records">
<role name="user">
<item>item1</item>
<item>item2</item>
</role>
</area>
</permissions>
我已经开始使用 xpath 来获取匹配区域:
$matchingAreas = $xml->xpath('/permissions/area[@name="' . $area . '"]');
如果 $matchingAreas >0 我真的不确定如何继续,我的想法是使用与角色列表匹配的 xpath 项构建一个对象:
foreach($roles as $role){
$roleNodes += $matchingAreas->xpath('/permissions/area/role[@name="' . $role . '"]');
}
我是 PHP 新手,这开始看起来很混乱/效率低下,所以我希望有人能告诉我进行此类操作的最佳方式?
谢谢
【问题讨论】: