Урок за PHP MVC Framework: Пример за CodeIgniter
Какво е PHP MVC рамка?
PHP MVC е шаблон за проектиране на приложение, който разделя данните на приложението и бизнес логиката (модела) от презентацията (изгледа). MVC означава модел, изглед и контролер.
Контролерът посредничи между моделите и изгледите.
Мислете за модела на дизайн на MVC като за кола и шофьор.
Колата има предни стъкла (изглед), които водачът (контролер) използва, за да следи трафика отпред, след това скоростта или спирачката (модел) в зависимост от това, което вижда отпред.
Защо да използвате PHP MVC Framework?
- PHP MVC Frameworks опростяват работата със сложни технологии чрез;
- Скриване на всички сложни детайли на изпълнението
- Предоставяне на стандартни методи, които можем да използваме за изграждане на нашите приложения.
- Повишена производителност на разработчиците, това е така, защото базовото изпълнение на дейности като свързване към базата данни, дезинфекция на потребителския вход и т.н. вече са частично внедрени.
- Спазване на професионалните стандарти за кодиране
PHP MVC шаблон за проектиране
Нека сега накратко обсъдим всеки компонент на модела на проектиране на MVC.
Модел – тази част се занимава с бизнес логиката и данните от приложението. Може да се използва за извършване на валидиране на данни, обработка на данни и тяхното съхраняване. Данните могат да идват от;
- плосък файл
- база данни
- XML документ
- Други валидни източници на данни.
Регулатор – това е частта, която се занимава с заявките на потребителите за ресурси от сървъра.
Като пример, когато потребителите поискат URL …/index.php?products=list, контролерът ще зареди модела на продуктите, за да извлече данните за продуктите, след което ще изведе резултатите в изгледа на списъка.
С две думи, контролерът свързва моделите и изгледите заедно в зависимост от исканите ресурси.
Прегледи – тази част се занимава с представяне на данните на потребителя. Това обикновено е под формата на HTML страници.
Видове PHP MVC рамка
Изборът на най-добрата PHP рамка е предизвикателство.
Не е нужно да пишете своя собствена рамка, за да се възползвате от предимствата на MVC.
Трябва само да се опитате да създадете свой собствен дизайн на приложение, свързано с MVC, за да разберете как работят MVC рамките.
След като се запознаете с начина, по който работят MVC рамките, трябва да преминете към зрелите и вече тествани рамки.
Таблицата по-долу описва накратко някои от популярните php рамки и функциите, които предлага всяка рамка.
Рамка | Descriptйон |
---|---|
|
Това е една от най-популярните PHP MVC рамки. Той е лек и има кратка крива на обучение. Има богат набор от библиотеки, които помагат за бързото изграждане на уебсайтове и приложения. Потребители с ограничени познания за ООП програмиране също могат да го използват. Задвижваните от CodeIgniter приложения включват; |
|
Това е сигурна и лека рамка на HMVC контролер за изглед на йерархичен модел. Има богат набор от компоненти за бързо разработване на приложения. Компаниите, които използват Kohana, включват; |
|
Моделиран е след Ruby on rails. Известен е с концепции като модели на софтуерен дизайн, конвенция над конфигурация, ActiveRecord и т.н. CakePHP захранваните приложения включват; |
|
Това е мощна рамка, която е;
Той включва API от доставчици като Amazon, Google, Flickr, Yahoo и др. Идеален е за разработване на бизнес приложения. Задвижваните от Zend приложения включват;
Компаниите, използващи рамката на Zend, включват;
|
Пренасяне на приложението за проучване на общественото мнение към CodeIgniter
В този настойнически, създадохме PHP приложение за анкети. Тук ще пренесем този код към CodeIgniter
- Изтегли най-новата версия на CodeIgniter от тях уебсайта.
- Извлечете съдържанието на компресирания файл във вашата директория за разработка в директорията на вашия уеб сървър. Ще използваме ciopinionpoll като име на папка в този урок.
- Прегледайте URL адреса http://localhost/ciopinionpoll/
Сега ще пренесем нашето приложение за проучване на общественото мнение към CodeIgniter. Спомнете си, че нашето приложение беше разделено на три основни компонента, а именно:
- Преден контролер – това е частта, която отговаря на URL заявки и връща исканата страница. Този код ще влезе в контролера
- Модел – това е кодът, който отговаря на заявените данни и връща исканите данни. Този код ще влезе в модела
-
Изгледи – това е кодът, който отговаря за форматирането и показването на данните. Този код ще влезе в изгледа
- Прегледайте папката ciopinionpoll
- Отворете база данни.php файл, намиращ се в директорията на приложението/конфигурацията.
- Намерете следните редове код
Настройки за конфигурация на база данни
- Задайте потребителското име на root
- Задайте паролата на вашата root парола за localhost
- Име на базата данни към opinion_poll. Имайте предвид, че ще използваме базата данни, създадена в предишния урок.
- Запазете промените и затворете файла.
Създаване на нашия модел
След това ще създадем нашия модел, който ще разшири CI_Model. CI_Model е част от библиотеките на CodeIgniter. Моделът ще се намира в приложение/модели opinion_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
ТУК,
- „клас Opinion_poll_model разширява CI_Model…“ е нашият модел, който разширява CI_Model
- „…parent:: __construct();“ извиква конструктора CI_Model
- “$this->load->database();” зарежда библиотеката на базата данни, така че нашето приложение да може да взаимодейства с базата данни
- “$this->db->” е активният запис на CodeIgniter. Проверете това връзка за повече информация относно активния запис.
Създаване на нашия контролер Нека сега създадем контролера. Ще използваме стандартния контролер CodeIgniter, който се намира в application/controllers/welcome.php. Заменете изходните му кодове със следния код.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('opinion_poll_model'); } public function index() { if ($this->input->post('submitbutton') && !$this->input->post('vote')) { echo "<script>alert('You did not vote!');</script>"; } if ($this->input->post('vote')) { $this->opinion_poll_model->add_vote($this->input->post('vote')); $data['total_votes'] = $this->opinion_poll_model->total_votes(); $data['rows'] = $this->opinion_poll_model->get_results(); $this->load->view('results', $data); } else { $this->load->view('opinion_poll_form'); } } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ ?>
ТУК,
- “if (!defined('BASEPATH')) exit('Не е разрешен директен достъп до скрипт');” гарантира, че потребителите нямат директен достъп до класа на контролера
- “class Welcome extends CI_Controller…” нашият контролер разширява класа CI_Controller
- „публична функция __construct()“ извиква метода на конструктора на класа на CI_Controller и зарежда нашия модел Opinion_poll_model
- „публична функция index()…“ е функцията, която се преобразува в index.php. той използва входния клас на CodeIgniter, за да провери дали е подаден глас, да го добави към базата данни и след това да покаже резултатите. Ако пост масивът на входния клас е празен, той зарежда страницата за гласуване.
- “$this->input->post('…')” е входният клас на CodeIgniter, който хваща съдържанието на глобалната променлива $_POST.
- “$this->opinion_poll_model->add_vote($this->input->post('vote'))” извиква метода add_vote на модела, за да добави гласа в базата данни.
Създаване на нашите изгледи
Спомнете си от предишния пример, че имахме две HTML страници, една за гласуване, а другата за резултати. Ще използваме същия HTML код с минимални модификации, за да създадем нашите изгледи. Създайте следните файлове в директорията application/views
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript Library?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
Нека сега създадем страницата с резултати results.php
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
Тестваме нашето приложение
Ако приемем, че основната директория на вашето приложение е ciopinion, прегледайте http://localhost/ciopionpoll/
Щракнете върху бутона OK, ще видите следното предупредително съобщение
Гласувайте за любимия си кандидат, след което щракнете върху OK. Ще видите следната страница с резултати
Заключение
CodeIgniter е лесна за научаване и използване PHP MVC рамка, която може значително да намали времето, изразходвано за разработване на приложения.
CodeIgniter е лесна за научаване и използване PHP MVC рамка, която може значително да намали времето, изразходвано за разработване на приложения.
Oбобщение
- Рамката е набор от библиотеки, които осигуряват частично изпълнение на общи задачи.
- PHP има редица зрели и тествани MVC рамки с отворен код.
- Добрият подход за разработка отделя данните от презентацията и насърчава използването на единична входна точка в приложението.
- Традиционните PHP приложения, които следват най-добрите практики за проектиране на приложения, могат да бъдат пренесени към MVC рамки с минимални модификации.