Transcript
Page 1: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

WEB PROGRAMIRANJEPHP 2PHP 2

MVC arhitektura i CodeIgniter

2014/2015. dr Nenad Kojić

Page 2: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� CI je MVC framework za PHP programski jezik

� CodeIgniter je MVC framework otvorenog koda koji se koristi za

izradu web aplikacija

� Razvijen je u cilju da se omogući brži razvoj projekata u odnosu

na programiranje od nule u čistom PHP-u.

� Ovo se postiže na taj način što se pruža bogat set klasa za � Ovo se postiže na taj način što se pruža bogat set klasa za

najveći broj zadataka koji se uobičajeno postavljaju u razvoju

savremenih dinamičkih sajtova.

� Cilj je da se programerima omogući da se što više fokusiraju na

kreativnost, na taj način da je potrebno što manje koda koji

treba da nešto uradi.

� Takođe je popularan zato što je to jedan od najbržih PHP

frameworka, a to je posledica toga što sam framework koristi

jako malo resursa.

Page 3: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Preuzeti poslednju veriziju sa sajta

http://ellislab.com/codeigniter

Page 4: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Raspakovati datoteku, i smestiti je u web server (npr. Pod

imenom CodeI)

� Nakon startovanja web servera, i ukucavanja URL adrese

127.0.0.1/CodeI, dobija se izgled kao na slici

To je to!!!

Page 5: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� M – Model (predstavlja biznis logiku, i zadužen za rad sa

podacima iz baze podataka i njihovu obradu )

� V – View (predstavlja podatke koji se prikazuju korisniku. To

može biti cela web strana, deo strane, RSS, ...)

� C – Controller (predstavlja vezu između Model-a i View-a. � C – Controller (predstavlja vezu između Model-a i View-a.

Prepopoznaje http requeste, analizira URL adresu i komunicira sa

korisnikom)

Page 6: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Ukucavanjem URL adrese od strane autora, dolazi se do faze

Routinga, koja treba da obezbedi analizu delova URL adrese

� Pre dolaska do Controllera, omogućeno je filtriranje podataka

zbog povećanja sigurnosti

� Nakon obrade od strane kontrolera, i dobijanja svih podataka od � Nakon obrade od strane kontrolera, i dobijanja svih podataka od

Model-a i drugih celina, kontroler vraća tražene podatke nazad,

preko View-a, i ako je caching aktivan, deo tih podataka se

snima, da bi se sa ponovnim zahtevom to brže obradilo

Page 7: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Kod standarnog PHP koda

index.php

Podfolder, sa dodatnim

fajlovima

http://127.0.0.1/index.php

Rootkontakt.php

proizvodi.php

fajlovima

http://127.0.0.1/proizvodi.php

Page 8: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Kod Codeigniter-a

index.php

Korisnik

Root

http://127.0.0.1/index.php/kontakt

Application

Controllers Model View

kontakt.php

Page 9: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� http://127.0.0.1/index.php/controller/method

Ime kontroleraIme metoda unutar

kontrolera

� http://127.0.0.1/index.php/controller/method/a/b

Parametri prozvanog

metoda

Page 10: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija
Page 11: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� U root direktorijumu CodeIgnitera nalaze se folderi:

application, system i user_guide.

� Folder Application je predviđen da sadrži datoteke koje

korisnik treba da pravi ili ih prilagodi svojim potrebama. korisnik treba da pravi ili ih prilagodi svojim potrebama.

� Folder system sadrži samu srž frameworka sa glavnim

klasama potrebnim za njegov rad.

� Folder user_guide sadrži uputstva za rad.

Page 12: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� U folderu application nalazi se folder config, koji je za

početak rada vrlo bitan.

� U config folderu podešavanja su podeljena po grupama tako

da je svaka grupa smeštena u poseban php fajl.

� U ovim fajlovima podešavanja se nalaze u asocijativnim� U ovim fajlovima podešavanja se nalaze u asocijativnim

nizovima, čije se vrednosti posle pozivaju prilikom svakog

poziva frameworku.

Page 13: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

autoload.php� Ovde se navode komponente koje želimo da se automatski pokreću zajedno sa sistemom. To

mogu biti: paketi, biblioteke, helperi, modeli, konfiguracioni fajlovi. Postoje određene klase zakorišćenje koje se pokreću automatski pa se ne navode ovde.

config.php� Ovde se konfigurišu osnovne opcije CI-a. Definisanje polaznog urla, index strane, charseta,

dozvoljenih url karaktera, prefiks za ekstendovane core klase, kod za enkripciju, parametrisesija, cookie-a, globalno XSS filtriranje. Jedna od interesantnih funkcija koja ovde može da se sesija, cookie-a, globalno XSS filtriranje. Jedna od interesantnih funkcija koja ovde može da se podesi je rad sa sesijama koje se čuvaju u bazi podataka, čime se postiže bolja sigurnost ipreglednost istih.

database.php� Postavljaju se podešavanja za povezivanje na bazu podataka sa kojom ce framework raditi.

Podržane su MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, i ODBC baze podataka.doctype.php� Definišu se html doctype koji će se koristiti.routes.php� Podešava se interno rutiranje zahteva koji stižu CodeIgniteru. Ukratko korisnik može da poziva

određenu stranu, da dobija odgovor od neke druge, a da toga nije svestan. Takođe ovde se navodi podrazumevani kontroler i strana koja će se koristiti za 404 grešku.

smileys.php� Podešavaju se parametri sličica koje će ugrađeni smily helper ispisivati.

Page 14: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� index.php/ nesto je strana kroz koju se framework inicijalizuje što znači da svaki poziv ka sajtu mora

početi sa ovom stranom.

� Ipak je moguće skloniti ovaj sement iz URL-a i na taj način omogućiti kompaktnije linkove koji se uz to

i bolje rangiraju na pretraživačima.

� Prvo u root pored index.php moramo staviti .htaccess fajl sa sledećim sadržajem:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /proconscale/RewriteBase /proconscale/

RewriteCond %{REQUEST_URI} ^system.*

RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*

RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>

<IfModule !mod_rewrite.c>

ErrorDocument 404 /index.php

</IfModule>

� Na kraju u application/config/config.php za $config['index_page'] trebamo staviti vrednost prazan

string.

Page 15: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

� Svaki od foledera za realizaciju MVC arhitekture, može imati

jedan ili više php fajlova

� Glavna koordinacije je kroz kontroler

� Svi kontroleri koji se pišu dolaze od CI_Controller� Svi kontroleri koji se pišu dolaze od CI_Controller

� Unutar kontrolera može biti više nezavisnih funkcija

� Svaka od njih može ali ne mora imati argumente

� Jako je bitno kako se poziva strana ili funkcionalnost u CI

� Na sličan način dobijaju se i modeli iz CI_Model

Page 16: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

class Controller extends CI_Controller{

public function method($a, $b){

// kod metoda// kod metoda}

}?>

Napomena: U kontroleru su potrazumevano učitane neke klase kaošto su:

� input – služi za dohvatanje post, get ili cookie podataka.� output – omogućuje controlleru da šalje ispis bez korišćenja view-a� load – koristi se za učitavanje klasa, modela, biblioteka itd.

Page 17: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function prva_1()

{

Bez argumenata

{

echo("Ovo je prva 1");

}

}

?> Kontroler

prva.php

Sadržaj index.php

stranice je za sada

nebitan

Page 18: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function prva_1($a, $b)

{

prva.php

Sa argumentima

{

echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b");

}

}

?>

Page 19: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

Bez drugog

argumenta

Page 20: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function prva_1($a, $b=“drugi”)

{

echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b");

prva.php

Podrazumevana

vrednost

echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b");

}

}

?>

Page 21: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function prva_1($a, $b="drugi") {

echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b");

}

public function druga_1(){public function druga_1(){

echo("Ovo je druga bez parametara");

}

}

?>

prva.php

Page 22: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function index() {

echo("Eeeee, ovo je prva strana!"); }

public function prva_1($a, $b="drugi"){public function prva_1($a, $b="drugi"){

echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b"); }

public function druga_1(){

echo("Ovo je druga bez parametara"); }

}

?>

P

r

eS

a

d

a

Page 23: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function __construct() { parent::__construct();echo("Inicijalizacija! <br/>"); } __construct()

public function index() {echo("Eeeee, ovo je prva strana!"); }

public function prva_1($a, $b="drugi") {echo("Ovo je prva_1 sa parametrima koji su prosledjeni \$a=$a i \$b=$b"); }

public function druga_1() {echo("Ovo je druga bez parametara"); }

}?>

Page 24: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function index() {

echo("Eeeee, ovo je prva strana!"); }Kontroler

prva.php

public function proba() {

$this->load->view("proba"); }

}

?>

prva.php

Page 25: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Welcome to first page</title>

</head></head>

<body>

<div >

<h1>Welcome to CodeIgniter!</h1>

Text ...

</div>

</body>

</html>

Page 26: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function index() {

echo("Eeeee, ovo je prva strana!"); }zaglavlje.php

public function proba() {

$this->load->view("zaglavlje");

$this->load->view("proba"); }

}

?>

zaglavlje.php

<h1> Ovo je zaglavlje </h1>

Page 27: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function index() {

echo("Eeeee, ovo je prva strana!"); }

proba.php

<div >

<h1>Welcome to CodeIgniter!</h1>

Ovo je parametar $cc <?php echo $cc; ?>

public function proba($a) {

$this->load->view("zaglavlje");

echo ("Promenljiva a je $a <br/>");

$x = array('cc' => $a);

$this->load->view("proba", $x);}

}

?>

Ovo je parametar $cc <?php echo $cc; ?>

</div>

Page 28: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class model_proba extends CI_Model

{

public function dohvati_studenta($podatak)

{

// sada se $podatak ne koristi, ali bi služio za neki upit bazi podataka

return array('smer' => 'IT', 'godina'=> 2, 'ime'=> 'Pera Peric');

}

}

?>

Page 29: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class prva extends CI_Controller {

public function index() {

echo("Eeeee, ovo je prva strana!"); }

public function proba($a){

$this->load->model("model_proba");

$informacija = $this->model_proba->dohvati_studenta("nesto");

// nesto je vraceno od modela, u ovom slucaju niz, i smesten u $informacija// nesto je vraceno od modela, u ovom slucaju niz, i smesten u $informacija

echo ('Ime je: '. $informacija['ime'] ." <br/>");

echo ('Godina je: '.$informacija['godina'] ." <br/>");

echo ('Smer je: '.$informacija['smer'] ." <br/>");

$this->load->view("zaglavlje");

echo ("Promenljiva a je $a <br/>");

$x = array('cc' => $a);

// dodavanje jos podataka koje se prosledjuju view-u

$x['student'] = $informacija;

$this->load->view("proba", $x);

} } ?>

Page 30: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<!DOCTYPE html>

<html>

<head><meta charset="utf-8">

<title>Welcome to first page</title><title>Welcome to first page</title>

</head>

<body>

<div > <h1>Welcome to CodeIgniter!</h1>

Ovo je parametar $cc <?php echo $student['godina']; ?>

</div>

</body>

</html>

Page 31: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?phpclass Home extends CI_Controller{ function index () //prikaz početne stranice sajta sa izlistanim svim

proizvodima{$this->load->model('home_model');$this->load->model('home_model');$data['categories']=$this->home_model->get_categories();$data['products']=$this->home_model->get_products2();$data['groups']=$this->home_model->get_groups();

$data['main_content']='home';$this->load->view('/includes/template',$data);}...}

Page 32: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

<?php

class Home_model extends CI_Model

{

function get_categories() //vraća sve kategorije

{

$sql="SELECT * FROM kategorije";$sql="SELECT * FROM kategorije";

$q = $this->db->query($sql)->result();

return $q;

}

function get_groups() //vraća sve grupe proizvoda

{

$query=$this->db->query('SELECT * FROM grupe');

return $query->result();

}

}

Page 33: WEB PROGRAMIRANJE PHP 2 - webdizajn.ict.edu.rs · CI je MVC framework za PHP programski jezik CodeIgniter je MVC framework otvorenog koda koji se koristi za izradu web aplikacija

WEB PROGRAMIRANJEPHP 2PHP 2

MVC arhitektura i CodeIgniter

2014/2015. dr Nenad Kojić


Top Related