Как я могу обеспечить безопасность на уровне строк, используя Zend_Db_Select
? Я могу придумать несколько вариантов, но они не совсем соответствуют шаблону.
Допустим, у меня есть users
, content
и много разных уровней ACL. Вот одно решение, о котором я подумал:
$select = $db->select()
->from('content')
->where('content_type NOT IN (?)',
Model_Content::userAllowedContentTypes()
)
->order('date DESC')
);
Но проблема в том, что если вы решите добавить другое поле для разных типов безопасности? Итак, я подумал, может быть, что-то вроде этого:
/**
* @var Zend_Db_Select
*/
$where = Model_Content::getWhere();
$db->select()
->from('content')
->$where()
->order('date DESC');
Лучше ... но это тоже не совсем правильно. То, что я хотел бы, это что-то вроде этого:
$db->select()
->from(array('c' => 'content'))
->getPlugin(new Model_Content_Security('c'))
->order('date DESC');
Но похоже, что я слишком близко подхожу к расширению или модификации библиотеки, чтобы получить что-то, что уже может быть там, но я не совсем это вижу.
У кого-нибудь еще была такая потребность, и как вы ее решили?