i_d_1
@i_d_1
Программист PHP

Где нужно в репозиторий подать другой Persistence по условию?

Репозиторий осуществляет выборку данных по средством Persistence. Есть два Persistence . Например memoryи databese. Может даже есть memcahed.

Где нужно воткнуть условие что если memory Persistence вернул 0 то тогда иди к databese Persistence?
И ещё более важно в каком месте осуществиться кеширование из db в memory Persistence. Вернее где это делить правильнее с точки зрения ООП.

Приблизительный код:

class MyController{
    function postsAction(){
        $memoryRepository = new PostsRepository(new PostsMemoryPesistence());

        if( empty(  $posts = $memoryRepository->getAll()  ) ) {
            $posts =  (new PostsRepository(new PostsDBPesistence()))->getAll();
            $memoryRepository->save( $posts )
        }
    }
}

class PostsRepository{
    function __constructor(Presistence presistence){
        this->presistence = presistence;
    }

    function getAll(){
        return this->presistence->getAll();
    }

    function save( Posts[] $posts ){
        foreach($posts as $post){
        this->presistence->save( $post );
        }
    }
}

interface Presistence{
    function getAll();
    functions save();
}

class PostsMemoryPesistence implements Presistence{
    $posts;
    function getAll(){}
    functions save(){}
}


class PostsDBPesistence implements Presistence{
    $db;
    function getAll(){}
    functions save(){}
}


На мой взгляд надо убрать логику условия и сохранения из контроллера. Вопрос куда?
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
dmitriylanets
@dmitriylanets
веб-разработчик
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект