hyperf3.0 Dao层和Service层

在 Hyperf 3.0 中,可以使用 Dao 层和 Service 层来组织和处理数据访问和业务逻辑。

Dao(Data Access Object)层是负责处理数据访问的层,它封装了对数据库或其他数据源的操作。Dao 层通常包含与数据源交互的方法,如查询、插入、更新和删除等。

在 Hyperf 中,你可以创建一个 Dao 类来实现数据访问逻辑。以下是一个示例:

<?php
declare(strict_types=1);

namespace App\Dao;

use Hyperf\DbConnection\Db;

class UserDao
{
    public function getById(int $id)
    {
        return Db::table('users')->where('id', $id)->first();
    }

    public function create(array $data)
    {
        return Db::table('users')->insert($data);
    }

    public function update(int $id, array $data)
    {
        return Db::table('users')->where('id', $id)->update($data);
    }

    public function delete(int $id)
    {
        return Db::table('users')->where('id', $id)->delete();
    }
}

在上面的示例中,我们创建了一个名为 UserDao 的 Dao 类,包含了根据 ID 获取用户、创建用户、更新用户和删除用户等方法。这些方法使用了 Hyperf 的数据库查询构建器 Db 来执行对数据库的操作。

Service 层是负责处理业务逻辑的层,它在 Dao 层之上,进行更高层次的业务处理。Service 层通常包含了与业务相关的方法,如用户注册、支付订单、发送邮件等。

在 Hyperf 中,你可以创建一个 Service 类来实现业务逻辑。以下是一个示例:

<?php
declare(strict_types=1);

namespace App\Service;

use App\Dao\UserDao;

class UserService
{
    private $userDao;

    public function __construct(UserDao $userDao)
    {
        $this->userDao = $userDao;
    }

    public function getUserById(int $id)
    {
        return $this->userDao->getById($id);
    }

    public function createUser(array $data)
    {
        // 验证数据
        // ...

        // 创建用户
        return $this->userDao->create($data);
    }

    public function updateUser(int $id, array $data)
    {
        // 验证数据
        // ...

        // 更新用户
        return $this->userDao->update($id, $data);
    }

    public function deleteUser(int $id)
    {
        // 删除用户
        return $this->userDao->delete($id);
    }
}

在上面的示例中,我们创建了一个名为 UserService 的 Service 类,通过构造函数注入了 UserDao,并使用 UserDao 的方法来实现业务逻辑。例如,通过 getUserById 方法获取用户,通过 createUser 方法创建用户,通过 updateUser 方法更新用户,通过 deleteUser 方法删除用户等。

通过将 Dao 层和 Service 层分离,可以更好地组织和管理代码,提高代码的可维护性和可测试性。Dao 层负责处理数据访问,Service 层负责处理业务逻辑,两者相互配合,使应用程序的结构更清晰和易于扩展。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容