Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我的Auth类中有数据库逻辑可以吗?_Php_Oop - Fatal编程技术网

Php 我的Auth类中有数据库逻辑可以吗?

Php 我的Auth类中有数据库逻辑可以吗?,php,oop,Php,Oop,我有大量的域对象,它们使用数据映射器来完成所需的数据库工作,因此域对象不知道映射器,也不知道数据来自何处,以保持高度抽象。现在我的问题是,我有一个Auth对象,我在应用程序启动的早期使用它: $auth = $container->get('auth'); $auth->isAllowed($pageName, $accountType); 目前,我在类中执行SQL操作,它可以正常工作,但有些事情告诉我我做错了。有没有更好的方法来实现这一点 我想有一种方法可以做到这一点,我将我的$

我有大量的域对象,它们使用数据映射器来完成所需的数据库工作,因此域对象不知道映射器,也不知道数据来自何处,以保持高度抽象。现在我的问题是,我有一个
Auth
对象,我在应用程序启动的早期使用它:

$auth = $container->get('auth');
$auth->isAllowed($pageName, $accountType);
目前,我在类中执行SQL操作,它可以正常工作,但有些事情告诉我我做错了。有没有更好的方法来实现这一点

我想有一种方法可以做到这一点,我将我的
$auth
对象放入
$authDAO
$authMapper
对象中,以查找数据库中的访问控制列表,但这对我来说毫无意义,因为
auth
对象并不是真正的“域对象”在我看来,绝对不需要数据映射器


在我的
Auth
对象中使用数据库逻辑可以吗?还是有更好的方法来处理非域对象的数据库逻辑/工作?

您使用的单词太多了,我不确定您提供的上下文中是否清楚。基本问题是:为什么你觉得它很奇怪?想想原因。另一个问题是:我的对象是否做得比它应该做的更多?在我看来,这很奇怪,因为一切都应该处于高抽象级别,而混合应用程序逻辑和数据库逻辑对我来说很糟糕,因为我习惯于使用数据映射器和存储库在我的域对象中没有数据库逻辑。为什么用户不是“域”对象'?比你头脑中狭义定义的任意类别更重要的是保持事物的一致性——如果所有其他持久化的事物都以一种方式处理,你能提出什么理由让用户成为特例?@SeanMcSomething完全正确,这也是我提问的目的。只要您只对数据库进行身份验证,就可以在general Auth类中使用逻辑。对于您当前的设置来说,它非常实用且足够好。当您开始允许针对多个身份验证提供程序进行身份验证时,您将希望抽象一些东西,例如,使用通用身份验证外观,将身份验证委托给专门的身份验证提供程序。