Користите образац дизајна спремишта у апликацији Ларавел

Раније сам писао о томе како да направите апликацију са Ларавел-ом и Вуе.јс. Ларавел је ПХП оквир за израду скалабилних веб апликација и АПИ-ја. Вуе.јс је Јавасцрипт оквир и алтернатива јКуери или Реацт.

Започните

У овом туториалу ћемо додати функционалност апликацији коју смо уградили у претходном упутству. Клонирајте гитхуб репо, покрените инсталацију композитора, инсталирајте нпм и повежите се са својом базом података.

$ мискл -уроот -п
мискл> створити базу података ларавелТаскАпп;

Ако сте заглавили у овом тренутку, погледајте остале чланке о којима сам писао о инсталирању МиСКЛ-а и почетном подешавању Ларавела. На лоцалхосту: 8000 можете видети апликацију која асинхроно додаје и брише задатке. То значи да обавља операције и приказује ажурне податке без освежавања веб странице.

Апликација задатака коју смо уградили у претходном водичу.

Паттерн Образац дизајна спремишта

У претходном уџбенику смо написали сву нашу логику апликације у регулатору. Постоји алтернативни приступ развоју који апстрактује неке позиве у ПХП класе под називом Репоситориес. Идеја је да моделе можемо уклонити из контролера и доделити читљива имена компликованим упитима.

Идемо поново да факсирамо своју апликацију да бисмо користили образац спремишта. Први корак је креирање датотеке за апп / Репоситориес / Репоситори.пхп.

 модел = $ модел;
    }

    // Набавите све инстанце модела
    јавна функција све ()
    {
        врати $ тхис-> модел-> алл ();
    }

    // створити нови запис у бази података
    креирање јавне функције (низ података $)
    {
        врати $ тхис-> модел-> креирај ($ дата);
    }

    // ажурирај запис у бази података
    ажурирање јавне функције (низ података $, $ ид)
    {
        $ рецорд = $ тхис-> финд ($ ид);
        врати $ рецорд-> упдате ($ подаци);
    }

    // уклони запис из базе података
    јавна функција брисање ($ ид)
    {
        врати $ тхис-> модел-> уништи ($ ид);
    }

    // прикажите запис са датим ид-ом
    схов јавних функција ($ ид)
    {
        врати $ тхис-> модел-финдОрФаил ($ ид);
    }

    // Набавите придружени модел
    јавна функција гетМодел ()
    {
        врати $ тхис-> модел;
    }

    // Подесите придружени модел
    сет јавних функцијаМодел ($ модел)
    {
        $ тхис-> модел = $ модел;
        врати $ тхис;
    }

    // Нестрпљиви односи базе података
    јавна функција са ($ односи)
    {
        врати $ тхис-> модел-> са ($ односи);
    }
}

Ова датотека дефинира нашу класу складишта. Примјери ове класе имају својство модела које везујемо за елоквентни модел. Након што је ово везано у конструктору можемо назвати Елокуент методе попут финдОрФаил, упдате или све из метода класе.

Имплементација одељка РепоситориИнтерфаце није строго потребна, али додаје додатни слој структуре нашем коду. Интерфејс је уговор који дефинише методе које МОРА да дефинише. У нашем случају интерфејс изгледа овако:

Ако направимо нова Репозиторија која имплементирају ово сучеље, увек ћемо знати да су ове методе дефинисане. Сучеља пружају структуру тако да знамо шта наш код треба да ради.

Повратак у нашу датотеку ТаскЦонтроллер.пхп инстанцирамо спремиште и у њега просљеђујемо у Таск модел.

 модел = ново спремиште ($ задатак);
   }

   индекс јавних функција ()
   {
       врати $ тхис-> модел-> алл ();
   }

   јавна продајна функција (Захтев за захтев $)
   {
       $ тхис-> потврди ($ захтев, [
           'боди' => 'обавезно | мак: 500'
       ]);

       // креирајте запис и проследите само у поља која се могу попунити
       вратите $ тхис-> модел-> цреате ($ рекуест-> онли ($ тхис-> модел-> гетМодел () -> филлабле));
   }

   схов јавних функција ($ ид)
   {
       врати $ тхис-> модел-> схов ($ ид);
   }

   ажурирање јавне функције (Захтевај $ захтев, $ ид)
   {
       // ажурирајте модел и проследите само у поља која се могу испунити
       $ тхис-> модел-> упдате (само $ захтев-> ($ тхис-> модел-> гетМодел () -> филлабле), $ ид);

       врати $ тхис-> модел-> пронађи ($ ид);
   }

   јавна функција уништити ($ ид)
   {
       врати $ тхис-> модел-> избриши ($ ид);
   }
}

Ларавел сервисни спремник аутоматски ће разрешити наше зависности и убризгати их у инстанцу контролера (документе).

У овом тренутку наша апликација ради потпуно исто, али код нам је поново постављен за употребу складишта и додали смо још неколико крајњих тачака АПИ-ја.

Изворни код доступан на Гитхуб-у

Ако сте кандидат на тржишту рада или стартуп желите да се запослите на подручју Баи-а, слободно направите профил на Емплоибл