Сравнение на codeigniter и kohana, Андрей Опейкин

Кръг 1 MVC.

Кохана

За разлика от Codeigniter, Kohana изисква постфиксът “_Controller ” да присъства в името на класа на контролера, без да уточнява кой, при достъп до контролера получаваме съобщение за грешка “Fatalerror :Cannotredeclareclass ”.

Според мен това не е много удобно, тъй като разработчикът може да има свои собствени правила за именуване на класове, които по никакъв начин не се пресичат с правилата на Kohana. Това обаче избягва конфликти на имената в случаите, когато класът на контролера и, например, моделът са именувани еднакво.

За да обозначите методи, които са налични само в контролера (не са достъпни от сайта), Codeigniter предлага използването на префикса "_ " в името на метода.

Kohana предлага две възможности за решаване на този проблем (едната от които е най-интуитивната според мен), а именно:

можете да декларирате метод катоprivate такъв метод не е достъпен чрез URL адреса на сайта

точно както в Codeigniter, можете да декларирате частен метод с префикса "_ "

също е частен метод.

Можете да комбинирате тези два метода и да декларирате метода по следния начин:

Контролерът в Codeigniter може да съдържа още две функции, които все още не са налични в Kohana:

_remap($method) - тази функция е предназначена за локално маршрутизиране, т.е. пренасочва към други контролери на приложения. Методът, заявен в URL адреса, се предава на него като параметър.

_изход($out) - обработеният дисплей се предава на функцията за изпращане към браузъра. Тази функция може да се използва за окончателна обработка на изхода.

Дисплеи(ПРЕГЛЕД)

И в двете рамки дисплеите (или изгледите, или изгледите) са просто PHP скриптове, съдържащи предимно HTML код. Въпреки това начинът, по който се обработват съпоставянията, е коренно различен в тези рамки.

Запалване на код

За да заредите файла на дисплея от контролера, се използва извикване на метод:

преглед_файл преглед на име на файл без разширение "php".

В Codeigniter, едновременно със зареждането, дисплеят се извежда към браузъра на потребителя.

За предаване на параметри към изгледа се използва следното извикване:

където$някои_данни е асоциативен масив, съдържащ параметри за показване.

Ако файлът за показване съдържа следния код:

Здравейте $user_fname $user_lname!

Този „изобразен“ дисплей (страницата, която потребителят ще види) ще изглежда така:

Здравей Андрей Опейкин!

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

Според мен недостатъкът на този подход е, че когато дисплеят се зареди, той автоматично се изпраща до браузъра на потребителя. За да прихванете изхода, трябва да използвате метода на контролера_output() —, описан по-рано, можете също да получите (вместо да изведете в браузъра) напълно подготвен дисплей, като предадете третия параметър към метода за зареждане на изгледа:

Кохана

Има два начина за зареждане на файлове за картографиране:

Използване на конструктора на класView

Извикване на статичен метод (фабричен метод)

И в двата случая "view_file" е името на файла за изглед.

Използванекойто и да е от тези методи води само до създаване на обект за показване, извеждането на съдържанието на дисплея къмбраузъра на потребителя НЕ се случва.

Нека използваме примера на картографирането, описано по-горе.

Използва се обектен подход за предаване на параметри към картографирането.

Можете също да предавате параметри, като използвате метода set();

Задаването на параметрите на дисплея, както и създаването на дисплейен обектNOT води до изпращане на информация до потребителя.

За да изпрати изхода, потребителят трябва да извика метода за изобразяванеrender()

Според мен подходътKonaha е по-удобен и практичен.

Модели (Модели)

И в двете рамки използването на модели НЕ е задължително. Ако искате, можете да се справите с контролери и изгледи.

Кохана

Както при контролерите, изисква класът на модела да има специфичен постфикс - "_Модел ".

За да заредите модела от контролера, трябва само да създадете екземпляр на моделния клас:

След това можете да получите достъп до всички методи и свойства на този обект.

Ако родителският конструктор се извика в конструктора на модела, т.е. конструкторът изглежда така:

Автоматично се зарежда класът за работа с базата данни, достъпен като

Запалване на код

За да заредите клас модел, използвайте следния код:

След това методите на модела могат да бъдат достъпни, както следва:

Обектът за работа с базата данни НЕ се създава автоматично при зареждане на модела, за да бъде създаден все пак обектът, трябва да подадете стойността TRUE като трети аргумент:

Вторият аргумент указва псевдонима на модела, чрез който ще бъде достъпен в контролера.

Цялата информация заFramework Kohana е взет от съответната документация. Възможно е да има някои неточности, тъй като документацията все още е в процес на разработка и не описва всички функции и API на тази рамка.