PHP MVC Framework Tutorial: CodeIgniter esimerkki
Mikรค on PHP MVC -kehys?
PHP MVC on sovelluksen suunnittelumalli, joka erottaa sovelluksen tiedot ja liiketoimintalogiikan (mallin) esityksestรค (nรคkymรคstรค). MVC tulee sanoista Model, View & Controller.
Ohjain vรคlittรครค mallien ja nรคkymien vรคlillรค.
Ajattele MVC-suunnittelumallia autona ja kuljettajana.
Autossa on tuulilasit (nรคkymรค), joita kuljettaja (ohjain) kรคyttรครค valvomaan edessรค olevaa liikennettรค ja sitten nopeutta tai jarrutusta (malli) riippuen siitรค, mitรค hรคn nรคkee eteenpรคin.
Miksi kรคyttรครค PHP MVC Frameworkia?
- PHP MVC Frameworks yksinkertaistaa monimutkaisten teknologioiden kanssa tyรถskentelyรค;
- Piilottaa kaikki monimutkaiset toteutustiedot
- Tarjoaa vakiomenetelmiรค, joita voimme kรคyttรครค sovelluksiemme rakentamiseen.
- Lisรครคntynyt kehittรคjien tuottavuus, tรคmรค johtuu siitรค, ettรค toimintojen perustoteutus, kuten tietokantaan yhdistรคminen, kรคyttรคjรคn syรถtteiden puhdistaminen jne., on jo osittain toteutettu.
- Ammattimaisten koodausstandardien noudattaminen
PHP MVC -suunnittelukuvio
Keskustellaan nyt lyhyesti jokaisesta MVC-suunnittelumallin komponentista.
Malli โ Tรคmรค osa koskee liiketoimintalogiikkaa ja sovellustietoja. Sitรค voidaan kรคyttรครค tietojen validointiin, tietojen kรคsittelyyn ja tallentamiseen. Tiedot voivat olla perรคisin;
- litteรค tiedosto
- tietokanta
- XML-dokumentti
- Muut kelvolliset tietolรคhteet.
ohjain โ Tรคmรค osa kรคsittelee kรคyttรคjien resurssipyyntรถjรค palvelimelta.
Esimerkkinรค, kun kรคyttรคjรคt pyytรคvรคt URL-osoitetta โฆ/index.php?products=list, ohjain lataa tuotemallin noutaakseen tuotetiedot ja tulostaa sitten tulokset luettelonรคkymรครคn.
Pรคhkinรคnkuoressa ohjain linkittรครค mallit ja nรคkymรคt yhteen pyydettyjen resurssien mukaan.
Nรคyttรถkerrat โ Tรคmรค osa kรคsittelee tietojen esittรคmistรค kรคyttรคjรคlle. Tรคmรค on yleensรค HTML-sivujen muodossa.
PHP MVC -kehyksen tyypit
Parhaan PHP-kehyksen valitseminen on haaste.
Sinun ei tarvitse kirjoittaa omaa kehystรค hyรถtyรคksesi MVC:n eduista.
Sinun tulisi vain yrittรครค luoda oma MVC:hen liittyvรค sovellussuunnittelu ymmรคrtรครคksesi, miten MVC-kehykset toimivat.
Kun olet tyytyvรคinen MVC-kehysten toimintaan, sinun tulee siirtyรค kypsiin ja jo testattuihin kehyksiin.
Alla olevassa taulukossa kuvataan lyhyesti joitain suosittuja php-kehyksiรค ja kunkin kehyksen tarjoamia ominaisuuksia.
| Puitteet | Tuotetiedot |
|---|---|
|
|
Se on yksi suosituimmista PHP MVC -kehyksistรค. Se on kevyt ja siinรค on lyhyt oppimiskรคyrรค. Siinรค on runsaasti kirjastoja, jotka auttavat rakentamaan verkkosivustoja ja sovelluksia nopeasti. Kรคyttรคjรคt, joilla on vรคhรคn tietoa OOP-ohjelmoinnista, voivat myรถs kรคyttรครค sitรค. CodeIgniter-kรคyttรถiset sovellukset sisรคltรคvรคt; |
|
Se on hierarkkinen mallinรคkymรคohjain HMVC, turvallinen ja kevyt kehys. Siinรค on runsaasti komponentteja sovellusten nopeaan kehittรคmiseen. Kohanaa kรคyttรคviรค yrityksiรค ovat mm. |
|
Se on mallinnettu Ruby on rails -mallin mukaan. Se tunnetaan sellaisista kรคsitteistรค kuin ohjelmistojen suunnittelumalleista, kokoonpanon ylittรคmisestรค, ActiveRecord jne. cakePHP powered sovelluksia ovat; |
|
|
Se on voimakas kehys;
Se sisรคltรครค API:ita toimittajilta, kuten Amazon, Google, Flickr, Yahoo jne. Se on ihanteellinen yrityssovellusten kehittรคmiseen. Zend-kรคyttรถiset sovellukset sisรคltรคvรคt;
Zend-kehystรค kรคyttรคviรค yrityksiรค ovat mm.
|
Mielipidekyselysovelluksen siirtรคminen CodeIgniteriin
Tรคssรค oppitunti, loimme PHP-kyselysovelluksen. Tรครคllรค siirrรคmme koodin CodeIgniteriin
- Lataa CodeIgniterin uusin versio heidรคn tuotteistaan -sivustolta.
- Pura pakatun tiedoston sisรคltรถ verkkopalvelimesi hakemistoon kehityshakemistoosi. Kรคytรคmme tรคmรคn oppitunnin kansion nimenรค ciopinionpoll.
- Selaa URL-osoitteeseen http://localhost/ciopinionpoll/
Aiomme nyt siirtรครค mielipidekyselysovelluksemme CodeIgniteriin. Muista, ettรค sovelluksemme oli jaettu kolmeen pรครคkomponenttiin, nimittรคin;
- Etuohjain โ tรคmรค on osa, joka vastaa URL-pyyntรถihin ja palauttaa pyydetyn sivun. Tรคmรค koodi menee ohjaimeen
- Malli โ tรคmรค on koodi, joka vastaa pyydettyihin tietoihin ja palauttaa pyydetyt tiedot. Tรคmรค koodi menee malliin
-
Nรคkymรคt โ tรคmรค koodi vastaa tietojen muotoilusta ja nรคyttรคmisestรค. Tรคmรค koodi siirtyy nรคkymรครคn
- Selaa ciopinionpoll-kansioon
- Avaa tietokanta.php tiedosto, joka sijaitsee Application/config-hakemistossa.
- Etsi seuraavat koodirivit
Tietokannan kokoonpanoasetukset
- Aseta kรคyttรคjรคnimi rootiksi
- Aseta salasana localhost-pรครคkรคyttรคjรคn salasanaksi
- Tietokannan nimi mielipidekyselyyn. Huomaa, ettรค kรคytรคmme edellisellรค oppitunnilla luotua tietokantaa.
- Tallenna muutokset ja sulje tiedosto.
Mallimme luominen
Seuraavaksi aiomme luoda mallimme, joka laajentaa CI_Model-mallia. CI_Model on osa CodeIgniter-kirjastoja. Malli sijoitetaan sovellukseen/malleihin mielipidekysely_malli.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);
}
}
?>
TรSSร,
- โclass Opinion_poll_model laajentaa CI_Modelโฆโ on mallimme, joka laajentaa CI_Model-mallia
- "...parent:: __construct();" kutsuu CI_Model-konstruktoria
- "$this->load->tietokanta();" lataa tietokantakirjaston, jotta sovelluksemme voi olla vuorovaikutuksessa tietokannan kanssa
- "$this->db->" on CodeIgniterin aktiivinen tietue. Tarkista tรคmรค linkkiรค lisรคtietoja aktiivisesta tietueesta.
Ohjaimemme luominen Luodaan nyt ohjain. Kรคytรคmme CodeIgniter-oletusohjainta, joka sijaitsee osoitteessa application/controllers/welcome.php. Korvaa sen lรคhdekoodit seuraavalla koodilla.
<?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 */
?>
TรSSร,
- "if (!defined('BASEPATH')) exit('Ei suoraa komentosarjan kรคyttรถรค sallittu');" varmistaa, ettรค kรคyttรคjรคt eivรคt pรครคse suoraan ohjainluokkaan
- โclass Welcome laajentaa CI_Controlleriaโฆโ ohjaimemme laajentaa CI_Controller-luokkaa
- "public function __construct()" kutsuu CI_Controllerin luokan rakentajamenetelmรครค ja lataa Opinion_poll_model-mallimme
- โpublic function index()โฆโ on funktio, joka liittyy indeksiin.php. se kรคyttรครค CodeIgniterin syรถttรถluokkaa tarkistaakseen, onko รครคnestys lรคhetetty, lisรครค se tietokantaan ja nรคyttรครค tulokset. Jos syรถttรถluokan viestitaulukko on tyhjรค, se lataa รครคnestyssivun.
- โ$this->input->post('โฆ')โ on CodeIgniterin syรถttรถluokka, joka nappaa globaalin muuttujan $_POST sisรคllรถn.
- "$this->opinion_poll_model->add_vote($this->input->post('vote'))" kutsuu mallin add_vote-menetelmรครค รครคnen lisรครคmiseksi tietokantaan.
Luomme nรคkemyksiรคmme
Muista edellisestรค esimerkistรค, ettรค meillรค oli kaksi HTML-sivua, yksi รครคnestรคmistรค ja toinen tuloksia varten. Kรคytรคmme samaa HTML-koodia pienin muutoksin nรคkemyksiemme luomiseen. Luo seuraavat tiedostot sovellus-/nรคkymรคhakemistoon
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>
Luodaan nyt tulossivu tulokset.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>
Testaamme sovellustamme
Jos sovelluksesi juurihakemisto on ciopinion, siirry kohtaan http://localhost/ciopionpoll/
Napsauta OK-painiketta, nรคet seuraavan varoitusviestin
รรคnestรค suosikkiehdokastasi ja napsauta sitten OK. Nรคet seuraavan tulossivun
Yhteenveto
CodeIgniter on helppo oppia ja kรคyttรครค PHP MVC -kehystรค, joka voi vรคhentรครค huomattavasti sovellusten kehittรคmiseen kรคytettyรค aikaa.
CodeIgniter on helppo oppia ja kรคyttรครค PHP MVC -kehystรค, joka voi vรคhentรครค huomattavasti sovellusten kehittรคmiseen kรคytettyรค aikaa.
Yhteenveto
- Viitekehys on joukko kirjastoja, jotka toteuttavat yhteisiรค tehtรคviรค osittain.
- PHP:llรค on useita avoimen lรคhdekoodin kypsiรค ja testattuja MVC-kehyksiรค.
- Hyvรค kehitystapa erottaa tiedot esityksestรค ja kannustaa kรคyttรคmรครคn sovelluksessa yhden syรถttรถpisteen kรคyttรถรค.
- Perinteiset PHP-sovellukset, jotka noudattavat sovellussuunnittelun parhaita kรคytรคntรถjรค, voidaan siirtรครค MVC-kehyksiin pienin muutoksin.








