【问题标题】:Access for PHP Class Method [closed]访问 PHP 类方法 [关闭]
【发布时间】:2019-06-25 14:53:48
【问题描述】:

我是面向对象的 PHP 新手,对在哪里实施访问限制有疑问。

我有一些方法可供任何人使用,但有些方法可以更新数据库,并且只能由特定用户级别访问。

类方法是否适合添加该逻辑,或者是否应该保持干净并将该逻辑放在进行方法调用的位置。

$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;
    }
}

$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;
}

我没有想到的其他方式。

【问题讨论】:

  • 你在使用 User 类吗?

标签: php oop methods


【解决方案1】:

理想情况下,权限由另一层处理,并且不与特定类本身严格耦合。

由于这个主题对于单个答案来说太多了,我建议阅读常见 PHP 框架中有关如何处理授权的文章,例如ZendSymfonyLaravel 或其他。

【讨论】:

    【解决方案2】:

    您似乎正在使用具有身份验证中间件https://laravel.com/docs/5.7/authentication 的 Laravel 框架,或者您可以在https://heera.it/laravel-5-1-x-acl-middleware 看到其他中间件。如果您使用其他框架,我认为它们支持这个问题。如果您实施上述访问限制,那么您或其他开发人员以后想要更改某些内容并进行调试时会很困难。

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 2015-02-25
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      相关资源
      最近更新 更多