重新规划数据库读取

Fork Me On Github
zodream zodream框架 2019年04月

大致分为三层

第一层数据库实体(Entity)

文件夹位置 Domain\Entities

主要内容:包含数据库名,表名,主键、字段名、字段验证

保存最原始数据,直接读取的也是最原始数据

第二层数据实体(Model)继承数据库实体

文件夹位置 Domain\Models

主要内容:关联表、追加字段、隐藏显示字段

值转化,

第三层数据仓库(Repository)获取数据实体

文件夹位置 Domain\Repositories

主要内容:读取方法,更新实体

包含获取哪些值,返回数据实体

问题

这样文件变得更复杂、传出来的值都会固定、适应不同接口场景

思考

到底在哪一层操作关联数据库?

使用

php
                          
<?php
namespace Domain\Entities;
/**
 * 
 * @property integer $id
 * @property string $name
 * */
class User {
    public static function tableName() {
        return 'user';
    }

    protected function rules() {
        return [
            'name' => 'required|string:0,100',
        ];
    }

    protected function labels() {
        return [
            'id' => 'Id',
            'name' => '昵称',
        ];
    }
}
1234567891011121314151617181920212223242526
php
          
<?php
namespace Domain\Models;

use Domain\Entities\User as UserEntity;

class User extends UserEntity {

    protected $hidden = ['password'];
}
12345678910
php
            
<?php
namespace Domain\Repositories;

use Domain\Models\User;

class UserRepository {

    public function get($id) {
        return 
    }
}
123456789101112
php
                  
<?php
namespace Service;

use Domain\Models\User;

class UserController {

    protected $user;

    public function __construct(UserRepository $user) {
        $this->user = $user;
    }

    public function indexAction($id) {
        return $this->render($this->user->get($id));
    }
}
123456789101112131415161718
点击查看全文
0 198 0