【发布时间】:2013-11-14 06:18:35
【问题描述】:
每个对象代表数据库中的一行。示例:
管理员表
id, first_name, last_name
1, 'John', 'Doe'
$admin 对象(伪)
class admin extends base {
protected $id;
protected $first_name;
protected $last_name;
public function setter() { }
public function getter() { }
/* ETC */
}
这部分我真的很清楚,我可以设置、获取和保存(这个函数位于基类中)数据。
现在,当我创建一个包含与另一个表相关的多行的表时应该怎么做。示例:
admin_preveleges 表
id, admin_id, privilege, value
1, 1, 'read_reports', 1
2, 1, 'delete_news', 1
3, 1, 'delete_users', 1
物体会是什么样子?对于我们的 John Doe 管理员,一个对象会包含所有 3 行吗?或者我会为 John Doe 创建 3 个对象吗?
如何将这些连接到管理对象?
如果我创建 3 个单独的对象并将它们连接到 $admin 对象,我如何检查这个管理员是否有删除用户的权限?我是否必须遍历所有对象并检查其中一个是否为“delete_users”然后中断循环?
或者我应该忘记将权限表变成一个对象,而只是在 $admin 对象中为它创建一个处理程序?
【问题讨论】:
-
对 HasMany 关系建模最直接的方法是通过对象上的数组来处理其他事物。但是基于角色的访问控制是一个已解决的问题,那么为什么不使用现有组件而不是滚动自己的组件呢?
标签: php mysql oop object logic