ПредишенСледващото

Вариант на автоматичното свързване на моделите клас от указаната

Mojolicious - рамка за уеб приложения за писане, има в арсенала си много полезна функционалност, тъй като изглежда, първо, за всички поводи. Но когато започнете да работите с тях внимателно и се опитайте да напишете отлично приложение, можете да се препънат по ситуация, в която на необходимите решения, липсват в основния набор. За мен липсата на Mojo е липсата на модели. Въпреки, достатъчно странно, тази функционалност не се изпълнява или в Mojo, без приставки към него, търсят по CPAN и на Google не разкрива съответните плъгини.

По време на престоя си с рамка Catalyst съм свикнала MVC. и не искат да се откажат от този принцип в развитието на Mojo.

Така че, това, което искаш? Би било желателно модели в Catalyst, от контролера, за да провеждате разговори може да напишете:

и тази рамка той зарежда всички модели от съответната директория.

В Mojo програмист сам предложил да добавите необходимата функционалност (например, за да се направи отделна директория в модули) или пишете обработка на данни и бизнес логика директно в контролера. Подобен подход се използва в уеб рамки и в други езици за програмиране, например, Laravel на PHP, колба с питон и се наслаждавам на път.

изпълнение

Така че, за да се създаде модел, направена от следните стъпки (покажи по примера на ново заявление):

  • Генерира Mojo-приложение: Mojo генерира приложение Моето приложение CD my_app / ИЪ.
  • Създаване на необходимите файлове и директории: докосване Моето приложение / Model.pm защитен режим MyApp / Модел докоснете Моето приложение / Модел / Base.pm.
  • Правила MyApp.pm:

В MyApp.pm файл сме създали обект на клас Моето приложение :: Модел. който премина в конструктор текущия обект. Трансфер до конструктора на този обект е необходимо, за да се поти от модела може да се прилага за всички методи на текущата клас.

В Моето приложение / Model.pm в конструктора, ние откриваме всички файлове в директория Моето приложение / модел / клас, използващи Mojo :: Loader и начин на търсене. Тук е необходимо да се изясни, че Mojo :: Loader не е в състояние да рекурсивно чрез указатели, т.е. ако директория Моето приложение / Модел е както следва:

на Mojo :: Loader-> търсене ( "Моето приложение :: Модел") игнорира директория MoreModel и зарежда модулите само от главната директория. Алтернативно, нов цикъл може да се изброят всички поддиректории в главната директория и да ги нахранят и Mojo :: Loader за изтегляне модули.

Следваща кода. В конструктора на модела зареждаме всеки модул намерен с модела (с изключение на Моето приложение :: Модел :: Base. За него по-късно) и го зареди в хеш модули. get_model метод връща класа, съответстващо на заявените или падне с грешка.

В Моето приложение / Модел / Base.pm файл задаваме всички методи, които ще бъдат наследени от други модели. Както подсказва името е ясно, че това е родителския клас за всички други модули с моделите. ред

Той казва, че е необходимо да се въведе елемент на обект

като метод за клас. Т.е. обадете $ самостоятелно> АРР> конфигурационния еквивалентно на $ самостоятелно -> -> довереник. Това синтактична захар от създателя на Mojo.

Какво е приложение, може да се разбира като погледнете в модула код MyApp.pm. Този обект е най-висока класа MyApp.pm. минахме на строителя.

Сега ние дам един пример за един прост модул с модела, например, Моето приложение / Модел / MyModel.pm:

Обадете се на този метод от контролера изключително лесно:

В този случай ще се нарича помощник модел. Определено в метода на Моето приложение :: стартиране. Този метод помощник връща обаждане get_model Моето приложение клас обект :: модел.

Е, това е всичко. Както можете да видите, наистина нищо сложно. Надявам се, че чрез способността да се направи известно време аз достигне ръцете всичко се организира като плъгин за Mojo, тъй като наскоро Аз работя доста активно, както и да пишат и същи код е постоянно уморен. Най-малко githabe проект за този случай вече е създал :)

Свързани статии

Подкрепете проекта - споделете линка, благодаря!