PHP „MVC Framework“ pamoka: „CodeIgniter“ pavyzdys

Kas yra PHP MVC sistema?

PHP MVC yra programos dizaino modelis, atskiriantis programos duomenis ir verslo logiką (modelį) nuo pateikimo (rodinio). MVC reiškia „Model“, „View & Controller“.

Valdiklis tarpininkauja tarp modelių ir vaizdų.

Pagalvokite apie MVC dizaino modelį kaip apie automobilį ir vairuotoją.

Automobilyje yra priekiniai stiklai (vaizdas), kuriuos vairuotojas (valdiklis) naudoja eismo stebėjimui į priekį, tada greitį ar stabdžius (modelį), atsižvelgdamas į tai, ką jis mato priekyje.

Kodėl verta naudoti PHP MVC Framework?

  • PHP MVC pagrindai supaprastina darbą su sudėtingomis technologijomis;
    • Slėpti visas sudėtingas įgyvendinimo detales
    • Pateikti standartinius metodus, kuriuos galime naudoti kurdami savo programas.
    • Padidėjęs kūrėjų produktyvumas yra dėl to, kad bazinis tokių veiklų įgyvendinimas kaip prisijungimas prie duomenų bazės, vartotojo įvesties dezinfekavimas ir kt.
    • Profesionalių kodavimo standartų laikymasis

Šioje pamokoje sužinosite

  • PHP MVC dizaino modelis
  • PHP MVC sistemos tipai
  • Nuomonės apklausos programos perkėlimas į „CodeIgniter“
  • Duomenų bazės konfigūracijos nustatymai
  • Mūsų modelio kūrimas
  • Mūsų pažiūrų kūrimas
  • Testuojama mūsų programa

PHP MVC dizaino modelis

Trumpai aptarkime kiekvieną MVC dizaino modelio komponentą.

Modelis - ši dalis skirta verslo logikai ir programos duomenims. Juo galima atlikti duomenų tikrinimą, apdoroti duomenis ir juos saugoti. Duomenys gali būti iš;

  • plokščia byla
  • duomenų bazė
  • XML dokumentas
  • Kiti galiojantys duomenų šaltiniai.

Valdiklis - tai dalis, susijusi su vartotojų užklausomis dėl išteklių iš serverio.

Pavyzdžiui, kai vartotojai prašo URL… /index.php?products=list, valdiklis įkelia produktų modelį, kad gautų produktų duomenis, tada rezultatus pateikia sąrašo rodinyje.

Trumpai tariant, valdiklis susieja modelius ir vaizdus, ​​priklausomai nuo prašomų išteklių.

Rodiniai - šioje dalyje kalbama apie duomenų pateikimą vartotojui. Paprastai tai yra HTML puslapiai.

PHP MVC sistemos tipai

Pasirinkti geriausią PHP sistemą yra iššūkis.

Norėdami pasinaudoti MVC pranašumais, neturite rašyti savo sistemos.

Turėtumėte pabandyti sukurti tik savo su MVC susijusią programos dizainą, kad suprastumėte, kaip veikia MVC sistemos.

Kai jums patiks, kaip veikia MVC sistemos, turėtumėte pereiti prie brandžių ir jau patikrintų sistemų.

Žemiau esančioje lentelėje trumpai aprašomos kai kurios populiarios PHP sistemos ir kiekvienos sistemos siūlomos funkcijos.

Sistema apibūdinimas
„CodeIgniter“ https://codeigniter.com/ Tai yra viena iš populiariausių PHP MVC struktūrų. Jis yra lengvas ir turi trumpą mokymosi kreivę. Jame yra gausus bibliotekų rinkinys, kuris padeda greitai kurti svetaines ir programas. Vartotojai, turintys ribotas žinias apie OOP programavimą, taip pat gali juo naudotis. „CodeIgniter“ valdomos programos apima;
  • https://www.pyrocms.com/
  • http://www.shopigniter.com/
Kohana http://kohanaframework.org Tai yra hierarchinis „Model View Controller HMVC“ saugus ir lengvas karkasas. Jame yra gausus komponentų rinkinys, leidžiantis greitai kurti programas. Įmonės, kurios naudoja „Kohana“, yra;
  • https://go.wepay.com/
  • https://kids.nationalgeographic.com/
  • https://www.sittercity.com/
„CakePHP“ www.cakephp.org Jis sukurtas pagal Ruby ant bėgių modelį. Tai žinoma dėl tokių sąvokų kaip programinės įrangos projektavimo modeliai, susitarimų dėl konfigūracijos, „ActiveRecord“ ir kt. „CakePHP“ valdomos programos apima;
  • http://invoicemachine.com/
  • http://www.fmylife.com/
www.framework.zend.com „ Zend“ Tai yra galinga sistema, kuri yra;
  • Saugus, patikimas, greitas ir keičiamas
  • Palaiko „Web 2.0“ ir interneto paslaugų kūrimą.
Jame yra API iš tokių pardavėjų kaip „Amazon“, „Google“, „Flickr“, „Yahoo“ ir kt. Tai idealiai tinka verslo programoms kurti. „Zend“ valdomos programos apima;
  • Pimcore CMS,
  • „DotKernel“.
Įmonės, naudojančios „Zend“ sistemą, yra:
  • BBC
  • „Cisco“
  • „Webex“
  • Pasiūlymai.com

Nuomonės apklausos programos perkėlimas į „CodeIgniter“

Šioje pamokoje mes sukūrėme PHP apklausos programą. Čia mes perkelsime šį kodą į „CodeIgniter“

  • Atsisiųskite naujausią „CodeIgniter“ versiją iš jų svetainės.
  • Ištraukite supakuoto failo turinį į savo žiniatinklio serverio katalogą. Šioje pamokoje kaip aplanko pavadinimą naudosime ciopinionpoll.
  • Naršykite iki URL http: // localhost / ciopinionpoll /

Dabar ketiname perkelti savo nuomonės apklausos programą į „CodeIgniter“. Prisiminkime, kad mūsų programa buvo suskirstyta į tris pagrindinius komponentus, būtent;

  • Priekinis valdiklis - tai dalis, kuri atsako į URL užklausas ir grąžina prašomą puslapį. Šis kodas pateks į valdiklį
  • Modelis - tai kodas, kuris atsako į prašomus duomenis ir grąžina prašomus duomenis. Šis kodas pateks į modelį
  • Rodiniai - tai kodas, atsakingas už duomenų formatavimą ir rodymą. Šis kodas pateks į rodinį
    • Naršykite į „ciopinionpoll“ aplanką
    • Atidarykite failą database.php, esantį programos / konfigūracijos kataloge.
    • Suraskite šias kodo eilutes

Duomenų bazės konfigūracijos nustatymai

  • Nustatykite root vartotojo vardą
  • Nustatykite slaptažodį „localhost“ šakninio slaptažodžio
  • Duomenų bazės pavadinimas į nuomonės_apklausą. Atkreipkite dėmesį, kad naudosime ankstesnėje pamokoje sukurtą duomenų bazę.
  • Išsaugokite pakeitimus ir uždarykite failą.

Mūsų modelio kūrimas

Tada mes sukursime savo modelį, kuris išplės CI_Model. „CI_Model“ yra „CodeIgniter“ bibliotekų dalis. Modelis bus faile application / models vélemény_poll_model.php

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 .= "
" . $ libraries [$i] . " Got:" . $result[0] . " votes

";}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);}}?>

ČIA

  • „Klasės nuomonės_apklausos_modelis praplečia CI_Model…“ yra mūsų modelis, praplečiantis CI_Model
  • „… Tėvas: __construct ();“ iškviečia „CI_Model“ konstruktorių
  • „$ This-> load-> duomenų bazė ();“ įkelia duomenų bazės biblioteką, kad mūsų programa galėtų sąveikauti su duomenų baze
  • „$ This-> db->“ yra aktyvus „CodeIgniter“ įrašas. Patikrinkite šią nuorodą, jei norite gauti daugiau informacijos apie aktyvų įrašą.

Valdiklio sukūrimas Dabar sukursime valdiklį. Mes naudosime numatytąjį „CodeIgniter“ valdiklį, esantį programoje / controllers / welcome.php. Pakeiskite jo šaltinio kodus šiuo kodu.

load->model('opinion_poll_model');}public function index() {if ($this->input->post('submitbutton') && !$this->input->post('vote')) {echo "";}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 */?>

ČIA

  • "If (! Apibrėžta ('BASEPATH')) išeiti (" Nėra tiesioginės prieigos prie scenarijaus ");" užtikrina, kad vartotojai tiesiogiai nepasiektų valdiklių klasės
  • „„ Class Welcome “praplečia CI_Controller ...“ mūsų valdiklis praplečia CI_Controller klasę
  • „Public function __construct ()“ iškviečia CI_Controller klasės kontraktoriaus metodą ir įkelia mūsų nuomonės_klausos_modelio modelį
  • „Public function index ()…“ yra funkcija, susieta su index.php. jis naudoja „CodeIgniter“ įvesties klasę, kad patikrintų, ar pateiktas balsavimas, įtraukite jį į duomenų bazę ir tada parodykite rezultatus. Jei įvesties klasės pašto masyvas yra tuščias, jis įkelia balsavimo puslapį.
  • „$ This-> input-> post ('…')“ yra „CodeIgniter“ įvesties klasė, kuri sugriebia visuotinio kintamojo $ _POST turinį.
  • „$ This-> Opinion_poll_model-> add_vote ($ this-> input-> post ('balsuoti'))“ iškviečia modelio add_vote metodą, kad balsas būtų įtrauktas į duomenų bazę.

Mūsų pažiūrų kūrimas

Prisiminkime iš ankstesnio pavyzdžio, kad mes turėjome du HTML puslapius, vieną balsavimui, kitą - rezultatams. Savo vaizdams kurti naudosime tą patį HTML kodą su minimaliomis modifikacijomis. Programų / rodinių kataloge sukurkite šiuos failus

opinion_poll_form.phpJavaScript Libraries - Opinion Poll

JavaScript Libraries - Opinion Poll

What is your favorite JavaScript Library?

JQuery
MooTools
YUI Library
Glow

Dabar sukurkime rezultatų puslapio rezultatus.php

JavaScript Libraries - Opinion Poll Results

JavaScript Libraries - Opinion Poll Results

What is your favorite JavaScript Library?

people have thus far taken part in this poll:

Return to voting page

Testuojama mūsų programa

Darant prielaidą, kad jūsų programos šakninis katalogas yra „ciopinion“, eikite į http: // localhost / ciopionpoll /

Spustelėkite mygtuką Gerai, pamatysite šį įspėjimo pranešimą

Balsuokite už savo mėgstamą kandidatą, tada spustelėkite Gerai. Pamatysite šį rezultatų puslapį

Išvada

„CodeIgniter“ yra lengvai išmokstama ir naudojama PHP MVC sistema, kuri gali gerokai sutrumpinti laiką, praleistą kuriant programas.

Santrauka

  • Karkasas yra bibliotekų rinkinys, suteikiantis dalinį bendrų užduočių įgyvendinimą.
  • PHP turi daug atviro kodo brandžių ir patikrintų MVC sistemų.
  • Geras kūrimo metodas atskiria duomenis nuo pateikimo ir skatina naudoti vieną įvesties tašką programoje.
  • Tradicines PHP programas, kuriose laikomasi geriausios programų kūrimo praktikos, galima perkelti į MVC sistemas su minimaliomis modifikacijomis.

Įdomios straipsniai...