我是面向对象的PHP的新手,并且对在哪里实现访问限制有疑问。
我有一些方法可以供任何人使用,但有些方法可以进行数据库更新,并且只能由特定用户级别访问。
Class方法是添加该逻辑的适当位置还是应该保持整洁并在执行该方法的位置放置该逻辑。
$product = new Product($id);
$product->setCategory($category);
public function setCategory($category)
{
if(get_access(5)) {
Item::where('id', $this->id)->update(['category' => $category]);
$this->category = $category;
}
}
OR
$product = new Product($id);
if(get_access(5)) {
$product->setCategory($category);
}
public function setCategory($category)
{
Item::where('id', $this->id)->update(['category' => $category]);
$this->category = $category;
}
OR
我没想到的其他方式。
答案 0 :(得分:2)
理想情况下,权限由另一层处理,并不严格与特定类本身结合。
由于这个主题对于一个答案来说太过分了,我建议您阅读常见PHP框架中有关如何处理授权的文章,例如Zend,Symfony,Laravel或其他。
答案 1 :(得分:0)
似乎您正在使用具有身份验证中间件https://laravel.com/docs/5.7/authentication的Laravel框架,或者可以在https://heera.it/laravel-5-1-x-acl-middleware上看到其他中间件。如果您使用其他框架,我认为它们支持此问题。如果您实施上述访问限制,则对于您或其他开发人员日后想要更改某些内容并进行调试时,将非常困难。