Изберете правилната PHP рамка

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

В дните преди уеб рамките беше обичайно да се виждат сайтове, написани по патентован начин. Различните кодери биха използвали свой собствен арсенал от техники и методологии при подреждането на своя код и проектирането на своята архитектура. Това би създало редица проблеми: липса на документация, сложни собственически рамки - или честият случай на „какво се случва, когато програмист напусне?“

Разработчиците често се опитват да решат проблема с организирането на кода, като следват процеса на „ разделяне на опасенията ’, Като всъщност разбива по-големите проблеми на по-малки и маркира отделни работни граници между раздели на кода.



Двигателите за шаблони предоставят още един полезен инструмент за подпомагане на разработването на уеб приложения. Smarty Template Engine е дългогодишна, популярна библиотека, позволяваща лесно разделяне на двете области на кода, с които уеб разработчиците често се занимават: генерирането на съдържание (известна още като бизнес логиката) и начина, по който се показва (маркиране или изглед на презентацията)

Здрави уебсайтове

Рамките наистина се използват през 2004 г., когато се предлагат като цялостно решение за изграждане на стабилни уебсайтове. Повечето от популярните PHP рамки се базират предимно на т.нар. Методология за проектиране модел-изглед-контролер или накратко MVC. Вероятно не е случайно, че добре познатите Рубин на релси MVC рамка, стартирана около средата на 2004 г .; това несъмнено ще е вдъхновение за много други PHP рамки.

Една от първите PHP рамки на сцената беше проектът Mojavi, който за съжаление вече не е активен. В днешно време обаче има много PHP рамки, които се борят за нашето внимание. В тази статия ще разгледаме четирите основни PHP рамки, които сега често се използват в индустрията: CakePHP, CodeIgniter, Symphony и Zend.

01. Какво точно представлява PHP рамката?

И така, какво е PHP рамка? По същество това е набор от PHP класове и функции, на които разработчиците се придържат, когато разработват сайт. Парадигмата MVC може да се разглежда като разширение на шаблониращите двигатели. Ето кратко обяснение:

  • Модел: Моделът съдържа бизнес логически код на сървъра. Обикновено това включва четене и запис в база данни в допълнение към някаква предварителна или последваща обработка. Например: ‘Потребител въвежда коментар, но преди да го вмъкнем в базата данни, трябва да направим проверка за нежелана поща с akismet.com; ако премине, можем да направим вмъкването. “
  • Изглед: Тук представяте изхода на потребителя в определен формат, най-често HTML маркиране, въпреки че може да бъде JSON или XML формат. Например: „Трябва да покажем всички коментари за тема на форума, моделът извлича всички коментари и след това се чете и форматира от изгледа.“
  • Контролер: Контролерът по същество е мениджърът. Първо прихваща URL адреса, след което извиква правилните модели и изгледи, преди да го представи на браузъра, мобилното устройство или API повикващия. Например: „При показване на всички коментари за дадена тема, контролерът прави действителното извикване на модела и след това предава данните на модела в изгледа, който след това генерира HTML изхода. След това този генериран изглед се показва на извикващия браузър от контролера. '

PHP рамката ви дава добре дефиниран шаблон за кодиране, където трябва да поставите определени видове код. Следващият ултра прост PHP код ще даде представа на кодера за това как работи MVC като цяло. Той показва текущото време, където се намирате!

// „Контролер“ на времето
функция controller_weather () {
$ type = model_weather ();
echo view_weather ($ type);
}
// Вземете текущите данни / времето, 'модела'
функция model_weather ()
// получаване на данните
$ status = 'Погледни през прозореца!';
връщане на $ статус;
}
// Генериране на HTML презентация, 'изглед'
функция view_weather ($ type) {
// дизайнът и оформлението трябва да са тук
връщане Времето, където се намирате:
'. $ тип;
}
// прехваща URL и извиква съответния контролер
if (strstr ($ _SERVER ['REQUEST_URI'], '/ weather /'
)) {
controller_weather ();
}
?>

Често срещана грешка е смесването на код между контролер и модел. В идеалния случай бизнес кодът трябва да бъде на едно място: в модела или всъщност библиотека на трета страна. Един добър въпрос, който трябва да си зададете, е „биха ли използвали тази логика други контролери; това е общ код? ’Ако отговорът е„ да “, тогава той трябва да принадлежи на това едно място, като моделът е най-често срещаният.

Все още има известно объркване относно това къде трябва да бъде поставена бизнес логиката, в контролерите или моделите. Просто Google „дебели модели кльощави контролери“. Голяма част от проблема произтича от факта, че „бизнес логика“ е размит термин.

Друг добър начин за ясно разделяне между бизнес логиката и възгледа е да се разработи API, който да улесни интеграцията с други системи. Това горе-долу принуждава уеб екип да изгради стабилна система, тъй като една и съща част от бизнес логиката трябва да се адаптира към различни сценарии. Освен това трябва да се вземе предвид това още в началото на проекта.

Изгледът е много по-лесен за разграничаване: в изгледа можете да имате само синтаксис за програмиране на дисплея. Контролерите и моделите никога не трябва да съдържат синтаксис на презентация, например
. Ще имате големи проблеми, ако го направите!

02. Как може да помогне?

Използването на PHP рамка може да не е отговор на всеки проект. Трябва да погледнете средата си и да прецените колко добре може да се побере PHP рамка. Ето някои плюсове и минуси при използването на рамки:

Професионалисти

  • PHP рамките могат да се използват като метод за бързо разработване на приложения , което позволява да се разработят бързи прототипи.
  • Тъй като всеки проект се основава на подобна структура, той позволява по-бърз цикъл на развитие.
  • Разработчиците могат лесно да прескачат от проект на проект, без да се притесняват твърде много за структурата на кода.
  • Играе добре с разработката на софтуер Agile.
  • Основният код ще се променя по-рядко, което води до по-стабилен сайт.

Минуси

  • Някои рамки имат стръмна крива на обучение.
  • Може да е трудно да се намерят разработчици с опит в дадена рамка.
  • Не всички рамки са без грешки
  • Хакерите могат да използват слабостите в рамките.
  • Интерпретациите на различните рамки и поддържащите библиотеки на принципа MVC могат да варират.

PHP рамки и рамки като цяло са главно в сферата на разработчиците. Други страни в рамките на уеб проект обаче имат различни нужди, когато става въпрос за рамки:

  • Мениджъри / собственици: Трите различни области на модел-view-controller в рамките дават на мениджърите начин да разделят задачите на управляеми парчета. Например разработчик, работещ в рамките на модела Products, не трябва да се притеснява как се използва външно. Външната презентация се разглежда от View. По същество рамката позволява по-лесно паралелно развитие. Agile разработката е метод за управление на проекти, който се съчетава добре с рамки. С много инструменти, достъпни на практика във всички рамки и чиста структура, които мениджърите могат да разберат, бързото развитие и обръщанията са норма.
  • Дизайнери: Визуалното представяне винаги ще бъде трудна задача за сливане в код. Използването на MVC рамка помага, но задачата все още е досадна и трудна. Разработчиците трябва да разделят дизайна на отделните му компоненти и да го съединяват в подходящите изгледи. Тук понякога CSS рамките могат да помогнат.

03. Конвенция относно конфигурацията

За да могат рамките да се справят с множество сценарии, настройката на конфигурацията е важна област. Повечето рамки избират „ конвенция за конфигурация ’Дизайнерско решение. Например, ако се извика класът PHP за даден модел модел_студенти , таблицата на базата данни трябва да бъде именувана ученици и трябва да се извика класът PHP за съответния изглед view_students . Това намалява сложността на конфигурационните настройки, както се вижда в предишния пример за времето на PHP.

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

Следното е конфигурационен фрагмент от код от маршрутизиращия файл на Symfony:

# app / config / routing.yml
Здравейте:
модел: / здравей / {име}
по подразбиране: {_controller:
AcmeHelloBundle: Здравейте: индекс}

Съответният код е просто скрипт „hello world“: ако URL адресът е например example.com/hello/Bob, тогава изходът е „Hello Bob“. Фрагментът на синтаксиса по-горе съвпада с URL адреса със съответната част от кода на контролера.

04. Вижте разделяне

Един от основните проблеми, които използването на MVC рамки решава, е отделянето на бизнес логиката от изхода на данни.

Смесването на някакъв код в логиката на презентацията е неизбежно при използване на PHP рамка. Искате обаче да не допускате всякакви маркировки на презентации извън контролера - и по-важното от модела. Така че в нашия прост пример за времето, ако решим да добавим удебеления HTML маркер , ще се счита за лоша практика, защото вероятно ще създаде проблеми, ако презентацията е в JSON или XML.

функция model_weather () {
// Това е лошо!
// В модела не е разрешено маркиране на презентация !!
// Поправете или друго!
$ status = ' Погледни през прозореца!b> ';
връщане на $ статус;
}

05. Поддръжка на база данни

Уеб приложенията най-често използват база данни за съхраняване на постоянни потребителски данни. И четирите основни PHP рамки имат добра поддръжка за MySQL и други често срещани драйвери на бази данни като Oracle и MS Server. Съществува свързан софтуерен компонент, наречен обектно-релационно картографиране (ORM), който някои PHP рамки използват. По-специално Symfony използва интензивно Doctrine, ORM на трета страна, който може да се използва и в други PHP рамки. ORM има за цел да опрости кода на базата данни в рамките на уеб проект.

06. Общност

Всички основни PHP рамки, които обсъждаме, имат подкрепа от общността; CodeIgniter е особено активен. Обърнете внимание на броя уроци за всяка PHP рамка, написана от блогъри: много необходим ресурс за подпомагане на разработчиците да разберат PHP рамката. Забележителен факт: Symfony направи голямо надстройване на версията през 2011 г. Знанията, свързани с новата версия 2, може да не са от значение; версия 2 обаче е основна промяна в доказана рамка.

07. Документация

Документацията е жизненоважна като официална отправна точка. Не би трябвало да е необходимо да се рови в изходния код, за да се види как трябва да работят нещата, въпреки че това е често срещано явление. Документацията трябва да съдържа добри примери за всяка функция. Нещо повече, добрият PHP фреймворк също трябва да има разнообразие от книги, форуми и видео уроци.

08. Допълнителни функции на PHP рамката

  • Помощни функции: Това често са обикновени PHP функции, които изпълняват само една задача, например проверка на имейл.
  • Кеширане: Това става все по-важно, тъй като достъпът до повече съдържание е по-широк набор от начини. Всички PHP рамки имат различна степен на кеширане на механизми. Много собственици на уеб също така избират инструменти на трети страни като Калмари .
  • Единично тестване: Това позволява автоматизирано тестване на код в приложението ви. За големи проекти трябва да се опитате да добавите някои модулни тестове. Всички разгледани PHP рамки имат свои собствени методи за тестване или употреба PHPUnit , което е почти де факто пакетът за тестване на PHP.
  • Генериране на формуляр: Тук PHP рамките наистина могат да блестят. Формулярите са толкова разпространени в уеб приложенията, че повечето рамки имат функции за генериране или валидиране, за да помогнат на разработчиците да добавят уеб формуляри.
  • Сесия: Функциите на сесията в PHP вече работят доста добре. Повечето PHP рамки добавят функции върху съществуващата PHP сесия. Zend, по-специално, има добри функции за контрол на сесията.
  • Шаблон: Това се отнася до начина на организиране на кода в рамките на изглед. Той се опитва да отговори на въпроса „кой е най-добрият начин за организиране на кода в изгледа?“. Smarty Template беше ранно решение преди MVC рамки. В контекста на тази статия Symfony е единствената рамка, използваща шаблонен софтуер, наречена Клонка . Той е много подобен на Smarty Template и е разработен от същата компания като Symfony.
  • Разширяващ / трети модул: Приставки и теми на трети страни са движещата сила зад платформите за разработка като WordPress и Drupal. Някои MVC рамки имат за цел да направят същото; почти всички от тях имат елементарни разширения или приставки на трети страни, с изключение на CakePHP. Рамките трябва да направят повече в тази област.
  • ACL: Контролът на достъпа и управлението на входа е често срещана характеристика на много уеб приложения. Всички рамки предоставят различни нива на функции, свързани с това, което често се нарича Списъци за контрол на достъпа (ACL). CodeIgniter е единствената рамка, в която трябва да търсите в мрежата за плъгини ACL на трети страни.

09. Основни претенденти

Има над 20 различни PHP рамки с отворен код; това често води до сериозен случай на замразяване на мозъка. През последните години обаче четирите основни рамки CakePHP, CodeIgniter, Symphony и Zend постепенно доминират.

Това се свежда до дълъг живот, подкрепа от общността и помощ за документация. Функциите не се използват, защото в повечето случаи правят подобни неща и ако в рамката липсва функция, вероятно ще е наличен приставка на трета страна. Как един чук е по-добър от друг, често е въпрос на лична философия, минал опит или настояща работна среда.

От четирите рамки CodeIgniter и CakePHP много си принадлежат, като CodeIgniter е най-лесният за взимане. Това е последвано от Zend и Symfony, защото те са много сходни. Symfony има най-стръмната крива на обучение в сравнение със Zend, поради по-голямо количество знания, които трябва да бъдат взети.

1 ТортаPHP
Професионалисти Активна общност; Cake Bakery (хлебопекарна. Cakephp.org)
Минуси Тортата има много специфични начини за правене на нещата

Тази рамка се вдъхновява от Ruby on Rails и много принадлежи на лагера KISS (оставете го просто глупаво). Неговата структурна структура е лесна за разбиране. Има папки за контролери, модели и изгледи. Повечето уеб приложения ще имат по-голямата част от кода си, съдържащ се в тези три типа папки.

Акцентът в CakePHP е Cake Bakery, където разработчици на трети страни могат да добавят свой собствен код и да го споделят с общността. CakePHP е добър среден план, не толкова прост като CodeIgniter, но и не толкова сложен като Zend или Symfony.

CakePHP няма добавки като ORM или механизъм за шаблони. От четирите рамки това е единственият, който няма корпоративна подкрепа - но това може да се разглежда като плюс.

две CodeIgniter
Професионалисти Скорост; много лек; голяма активна общност, добра документация
Минуси Може да позволи твърде много свобода в кодирането

Създадено от EllisLab в Орегон и пуснат скоро след CakePHP, през 2006 г., това е чудесно в проекти, където се предпочита подходът на най-добрата порода. Можете да добавите друг софтуер на трети страни, без да се чувствате претеглени, и като CakePHP и Zend, той има ясна структура на папките MVC, която можете да следвате. CodeIgniter също така дава на разработчиците повече пространство за решаване на проблеми според тяхното мислене, за разлика от Zend или Symfony, в които трябва да мислите по отношение на индивидуалната методология.

3 Symfony
Професионалисти ORM; има собствен механизъм за шаблони
Минуси Стръмна крива на обучение

Symfony, създаден от френската агенция SensioLabs , определено се чувства различно. Той популяризира използването на ORM, плюс за тежка работа с бази данни, и използва свой собствен механизъм за шаблони Twig, също създаден от SensioLabs.

За да усетите, насочете се към symfony.com , сайтът с версия 2. Не се бъркайте с сайта от версия 1, symfony-project.org; версия 2 е тази, която трябва да научите!

В Symfony няма очевидна терминология на MVC, въпреки че прави почти същото нещо като другите рамки. Той има уникална концепция, наречена Bundles, колекции от свързан код или файлове, които помагат за отделянето на функциите на уеб приложението. Подобно на Zend, генерирането на код играе важна роля в Symfony.

Това е най-трудната за разбиране рамка, но с добра подкрепа от общността помощта никога не е далеч. Структурата на модела е различна от много други рамки: тя популяризира Доктрината като входна точка за кода на бизнес логическия модел.

4 Зенд
Професионалисти Добър корпоративен софтуер с дълголетие
Минуси Концепциите на дизайнерския модел отнемат време, за да се схванат

Създадено от Zend, фирмата зад PHP двигателя, беше очевидно, че тази рамка ще бъде взета на сериозно. Zend има характеристиките на стабилен софтуер в корпоративен стил, както и свързани търговски продукти като търговски уеб сървър, поддръжка и собствена IDE. В комбинация те го правят мощен начин за разработване на уеб приложения.

Zend е подобен на CodeIgniter и CakePHP, но базирана на тежка документация концепции за дизайнерски модел може да затрудни започването с.

Zend е може би най-търсената рамка, когато се разглеждат описанията на длъжностите, свързани с PHP, и има доста добри функции в нея. The Луцен функцията за търсене довежда уеб приложение с търговска оценка до приложение; други акценти включват създаване на формуляри, филтриране на данни и интернационализация. Но Zend е много повече от PHP рамка; се възползвате от подкрепата, обучението, сертифицирането и свързаните с тях продукти.

10. Избор на рамка

Изборът на вашата рамка може до голяма степен да зависи от обстоятелствата на проекта и както всеки инструмент е личен философски избор. Агенция за един човек може да иска бърз обрат с кратка крива на обучение; голяма фирма може да предпочете стабилен софтуер, който има усещането за Java - критериите, на които Zend ще отговаря.

Дълголетието е важен фактор. Той е свързан тясно с документацията; рамки с дълга история имат по-голям набор от знания. Разходите също могат да бъдат проблем: рамките с по-стръмни криви на обучение, като Zend или Symfony, ще изискват квалифицирани програмисти - което винаги означава по-високи заплати. Търговската подкрепа често е необходима за големи проекти; Zend или Symfony са в добра позиция да заемат мястото.

Както бе споменато по-горе, ако търсите кариера в PHP кодирането, Zend е основната рамка, която компаниите искат. Това може да се подхранва и от факта, че платформата за електронна търговия Magento използва Zend като основна структура.

За поръчковите приложения често е трудно да се мисли защо не бихте използвали рамка. Възможно е обаче да има няколко изключения:

  • Искате сайтът да се възползва от изчистването / темите, за да можете лесно да разработвате общи сайтове, като в този случай WordPress е добър кандидат за използване.
  • Може да не искате да се занимавате с грешки на трети страни в рамките. Възможно е също да има твърде много нежелано автоматизирано поведение.

Таблицата по-долу ви показва някои от характеристиките, които всяка от четирите основни рамки трябва да ви помогне да решите коя е най-подходящата за вашия проект:

Рамките като цяло осигуряват солидна основа при създаването на уеб приложения от нулата. Въпреки това, PHP рамките често могат да се объркат със CMS системи като Joomla, WordPress или Drupal; те предоставят готова платформа за управление на съдържанието, към която можете да добавите и поръчкови функции.

Хората често питат дали преминаването от една рамка в друга е лесна задача. Накратко, миграцията от една рамка или наистина от CMS система е еквивалентна на цялостно пренаписване на сайта. Въпреки че всички те използват MVC архитектура, интерпретацията и философията на всяка рамка са съществено различни.

11. Други технологии

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

Включването на JavaScript библиотеки / рамки обикновено е лесно; тя горе-долу включва фронтенда. Всички PHP рамки имат помощни функции за включване на JavaScript и CSS файлове. В другия край на скалата можете просто да включите библиотеката като права таг в HTML.

PHP рамките също са оборудвани за справяне с много от често срещаните проблеми със сигурността, като XSS (уязвимост на достъпа), XSRF (зареждане на злонамерена страница) и SQL инжектиране (кражба на данни). А що се отнася до SEO, всички рамки имат вградени структури за справяне с изисквания като пренаписване на URL адреси. Имайте предвид, че скоростта е фактор за SEO и трябва да се има предвид размерът на рамката.

И накрая, когато се мисли за изчислителни облаци / хостинг, големи рамки като Zend или Symfony трябва да бъдат взети предвид при закупуването на сървъри.

12. Заключение

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

Ако вашият сайт включва повече съдържание, Drupal или WordPress може да са по-подходящи. Ако изграждате следващия Twitter, за да стартирате ASAP, CodeIgniter или CakePHP би бил добър избор. Ако вашата среда е корпоративна, тогава Zend или Symfony може да са най-подходящи.

И накрая - ако смятате, че трябва да създадете PHP рамка по поръчка, вземете крекинг: всъщност е доста забавно!

Тази статия се появи за първи път в .net - най-продаваното списание в света за уеб дизайнери и разработчици.

Кай Чан е уеб разработчик на свободна практика, има над 16 години опит в създаването на уеб приложения за корпоративни марки и обича нови идеи за стартиране

Хареса ли ви това? Прочетете тези!