Framework - Za Pocetnike

1

Framework - Za Pocetnike

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Upotreba PHP Framework-a
Uputstvo za pocetnike


U ovoj temi govoricemo o koriscenju raznih frameworkova u PHP, u pitanju je domaci tutorial, koji je namenjen iskljucivo pocetnicima Objektno orjentisanog programiranja u PHP-u.
Ovo uputsvo je namenjeno malo iskusnijim korisnicima php, da biste poceli raditi u bilo kojem frameworku potrebno je znanje koriscenja Objekata i klasa.

Da nebismo preskakali i pomogli pocetnicima pojasnicemo na kratko sta su to objekti i klase.


Objektno Orjentisani PHP

U ovom malom poglavlju namenjenom pocetnicima koji i dalje pisu svoje aplikacije na osnovi AD HOC pristupu, pisacu malo o objetkno orjentisanom programiranju u php-u. Necu pisati kodove i primere, malo teorije da bi razumeli sta je sta. Ostatak primera mozete pogledati na oficionalnom sajtu PHP-a.

Vecina poznatijih programskij jezika podrzava objektno orjentisani koncept programiranja, dok neki jezici iskljucivo zahtevaju koriscenje objektno orjentisani pristup razvoju softwera. Pri objektnom orjentisanom razvoju softwera teziste se stavlja na upotrebu klasifikacija, odnosa i svojstva objekata u sistemu da bi se olaksao razvoj programa i omogucila visekratna upotreba razvojnnog koda.


Sta su to Klase i Objekti?


U kontekstu objektnog orjentisanog softwera, objekat moze biti bilo koja "stvar" ili koncept - fizicki objekat poput stola ili kupaca, odnosno konceptualni objekat koji postoji samo u softweru, poput datoteke ili polja za unosenje teksta. Obicno nas zanimaju i objekti iz stvarnog sveta i konceptualni objekti, koje moramo prestaviti u softwerskom obliku.

Objektno orjentisane aplikacije se projektuju i grade kao skup samostalnih objekata sa atributima i operacijama koji medjusobnom iterakcijom ispunjavaju zahtev datog projekta.


Atributi : Su svojstva ili promenljive koje opisuju objekat ili sadrze neku vrednost.

Operacije : Su metode, radnje ili funkcije koje objekat moze da izvrsava da bi izmenio sebe ili nesto u svom spoljasnjem okruzenju.

Objekat : Je jedinstveni skup odredjenih podataka i operacija nad tim podacima. Objetki se mogu grupisati u klase, tako da svaka klasa prestavlja skup odredjenih objekata koji se medjusobno mogu razlikovati, ali koji ipak imaju izvestan broj razlicitih karekteristika.

Polimorfizam : Objektno orjentisan programski jezik mora da podrzava polimorfizam, sto znaci da se istoimena operacija moze potpuno razlicito ponasati u razlicitim klasama. .

Nasledjivanje: Nasledjivanje omogucava definisanje hijerarhiskih odnosa medju klasama pomocu potklasa. Potklasa nasledjuje atribute i operacije od svoje natklase. .

Konstruktori : Konstruktor se poziva prilikom pravljenja date klase i obicno obavlja korisne pocetne poslove, kao sto su dodeljivanje pocetnih vrednosti atributima ili izrada zavisnih objekata..

Destruktori : Deluje suprotno od konstruktora. Omogucava da izvrsite odredjene akcije pre unistavanja objekata, sto se automatski obavlja kada vise nema nijedne reference koja upucuje na taj objekat..

Interfejsi : Korisna stvar da bi zaobisli ogranicena jednostruka nasledjivanja. Sustina iterfejsa je u tome da deklarise odredjeni broj funkcija koje moraju biti realizovane u svim klasama koje realizuju taj interfejs..


Opsirnije o ovom poglavlju mozete pogledati na sajtu PHP-a.
http://www.php.net/manual/en/language.oop5.php


Upotreba Framewoka

Da biste olaksali sebi zivot i da bi vase aplikacije izgledale uredno, organizovano i profesionalno po najnovijim principima programiranja vecina iskusnijih programera se odlucuje za vec gotova resenja tipa kao sto su razlciti Framworkovi.
Framework je skup raznih klasa koje sadrze veliki broj raznih funkcija koje moku obavljati svakojake operacije kao sto su I/O operacije crtanja, rad sa stringovima, rad sa bazama, XML dokumentima, sesijama itd...
Sve ove funkcije omogucavaju da posao programera bude laksi.

Postoje razni frameworkovi namenjeni iskljucivo za rad u PHP programskom jeziku. Neki od popularnijih frameworkova su.


Akelos
CakePHP
CodeIgniter
Symfony
Yii
Zend


U ovom tutorialu ja cu kao primer koristit CodeIgniter framework, iz razloga zato sto je on naj jedonstaviniji za upotrebu i brzo se kapira, vecinom je namenjen pocetnicima kao i iskusnijim programerima ...

Da biste krenuli da radite u Codeigniteru potreban vam je server ili lokalni server.
Preuzmite poslednju verziju Codeignitera sa oficionalnog sajta.
http://codeigniter.com


Instalacija


Posle preuzimanja potrebano je raspakovati datoteku na server.
Pronadjite config fajl (application/config/config.php) izmenite url do vase aplikacije
Ako zelite da radite sa bazom otvorite(application/config/database.php) i izmenite podatke za konekciju sa bazom.


Struktura

Ci FW je jako jednostavan za upotrebu a podrsava i jos laksu strukturu.

Direktorijum System sadrzi sve klase koje vam omogucavaju da biste radili u ovom Frameworku, drugacije nazvano srce frameworka. Ime ovog direktorijuma mozete promeniti tako sto cete izmeniti promenljivu u index.php

$system_path = 'system';

Direktorijum Application sadrzi sve operacije koje korisnik definise, kontrolere, modele, sablone za pregled, biblioteke koje korisnik sam definise.
Ime ovog direktorijuma mozete promeniti tako sto cete izmeniti promenljivu u index.php

$application_folder = 'application';

Direktorijum Controllers sadrzi sve kontrolere koji definisu vasu applikaciju i akcije.
Direktorijum Models sadrzi sve akcije koje su povezane sa bazom podataka
Direktorijum Views sadrzi sablone koji se prikazuju krajnjem korisniku za pregled.

Codeigniter je full MVC, tako da ko jos nije upucen kako sve to funkcionise neka prouci malo vise o tome na sledecoj adresi.

Kontroleri

Kontroleri su srce vase aplikacije takodje oni odlucuju sa koliko HTTP zahtevima se upravlja.
Takodje to su jedonstavne klase koje se zovu na nacin koji moze biti povezan sa URI.

Primer.
Napravili ste kontoler klasu sa imenom BLOG.
Url bi izgledao ovako:

example.com/index.php/blog/
U ovom primeru, CodeIgniter ce pokusati da nadje kontroler po imenu blog.php i ucitati ga.

Jako bitno je naglasiti da svka klasa mora da sadrzi isto ime klase i isto ime fajla.
Ime klase mora pocinjati velikim slovom npr. (Blog).

blog.php
class Blog extends CI_Controller { }

Kao to izgleda u praksi.
Sada cemo napraviti jedan jednostavan kontroler koji ispisuje tekst "Zdravo Svete".
Napravite novi fajl imenujte ga kako zelite "zdravoSvete.php".

<?php class ZdravoSvete extends CI_Controller {    public function index()    {       echo 'Zdravo Svete!';    } } ?>
Sacuvajte fajl u application/controllers/ folderu.

Nakon pokretanja ovog kontrolera dobicete ispis na monitoru Zdravo Svete!
example.com/index.php/zdravoSvete/

Funkcije

U predhodnom primeru koristili smo funckiju index(), funkcija index() ce uvek piti pozvana ako je drugi segment URL-a prazan. Pogledajmo kako to izgleda u drugim funkcijama:

<?php class Blog extends CI_Controller {    public function index()    {       echo 'Zdravo Svete!';    }    public function komentar()    {       echo 'Ovo je moj komentar!';    } } ?>

Sada pokrenite ovaj fajl u vasem browseru i dobicete ispis "ovo je moj komentar".

example.com/index.php/blog/komentar/

Preuzimanje URL segmenata

Kratko objasnjenje za one koji neznaju kako URI segmenti funkcionisu.
Primer:
example.com/index.php/blog/post/123/

Segment-0 : index.php
Segment-1 : blog
Segment-2 : post
Segment-3 : 123

Sada ako zelite da neku vrednost iz datog segmenta ucitate u vasu funkciju to mozete uraditi sledecim primerom.. Ovo je jako bitno jer cete dolaziti u situacijama kada cete morat nesto dinamicki da izbrisete ili izmenite, da biste to odradili morate uzeti ID ili ime odredjenog segmenta koje prosledjujete funkciji za brisanje.

<?php class Blog extends CI_Controller {     public function delete($id)     {         echo $id;     } } ?>

View

View prikazuje krajnji prikaz necega npr. Header, Footer, Content, Login form itd.
View se nemoze direktno pozivati, uvek mora biti ucitan u kontoleru.

Primer iz predhodnog kontrolera blog.
<html> <head> <title>My Blog</title> </head> <body>    <h1>Welcome to my Blog!</h1> </body> </html>

Sacuvajte u application/views/ blog.php

Da biste ucitali neki sablon za prikaz kao sto sam vec napomenuo mora biti ucitan direktno iz kontrolera.

<?php class Blog extends CI_Controller {    function index()    {       $this->load->view('blog');    } } ?>

Nakon pokretanja ovog kontrolera dobice slican rezultat predhodnom primeru:

example.com/index.php/blog/

Codeigniter vam omogucava da ucitate vise sablona od jednom.
Na primer imate kontroller page i razdvojene sablone tipa kao sto su Header, footer, content, sidebar, menu.
Ovo mozete uraditi isto kao i u predhodnom primeru.

<?php class Page extends CI_Controller {    function index()    {       $data['page_title'] = 'Your title';       $this->load->view('header');       $this->load->view('menu');       $this->load->view('content', $data);       $this->load->view('footer');    } }

Sada cu napisati jedan primer da bi pocetnici bolje razumeli, kako se sve ovo koristi direktno u praksi...

Napravite novi kontroler sa imenom Sajt

<?php class Sajt extends CI_Controller {    function index()    {       $data['title'] = "Naslov";        $data['header'] = "Header";                      $data['menu'] = array("Pocetna","O name","Blog","Kontakt");       $this->load->view('sajt', $data);    } } ?>
Napravite novi sablon sa imenom sajt.php
<html> <head> <title><?php echo $title;?></title> </head> <body>    <h1><?php echo $header;?></h1>         <ul>                <?php foreach ($menu  as $item):?>                     <li><?php echo $item;?></li>                <?php endforeach;?>        </ul> </body> </html>


NASTAVICE SE



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Odlican tutorial, sve pohvale!
Ja sam poceo da se zamlacujem sa CodeIgniter-om pre oko 5-6 meseci iz radoznalosti i ostao na njemu, zadovoljan sam. I sada se postavlja jedno pitanje, gde si bio pre pola godine da napises ovo?! Mr. Green Mada sve ovo ima u dokumentaciji na njihovom sajtu ali ja volim sve sto je domace



offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Upravo to sve sto je domace....
CI mi je miljenik zbog jednostavnosti.... A kvalitet je.
Moze biti i modularan, moze da se prosiruje, umesto puginova ima helpere sto je dobra prednost za prosiravanje CORE Code.

offline
  • Pridružio: 21 Feb 2009
  • Poruke: 97
  • Gde živiš: Istocno Sarajevo

Ja sam nesto ljubimac CakePHP-a, a u poslednje vrijeme mi je Yii favorit, nisam nikad probao CI.

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1630
  • Gde živiš: Pancevo

Yi FW je jako po meni komplikovan, gledano sa tacke programera i citanje koda... Par puta sam gledao kod i bas je tesko razumeti sta je programer hteo.... Mada eto jedan od vodecih lidera...
Uporedi Zend FW i YI pa ces videti jednostavnost a kvalitet...

offline
  • Pridružio: 19 Jul 2012
  • Poruke: 1

Ivane,možda sam pogrešio ali ako ti je poznat moj nalog ili mail pretorian75@yahoo.com javi se.....
Dejan sa televizije

offline
  • Milan Kragujević
  • tzv. Junior PHP Programer
  • Pridružio: 20 Avg 2011
  • Poruke: 76
  • Gde živiš: Klenovnik, Srbija

Odličan tutorijal, očekujem nastavak. Mora da se napreduje sa proceduralnog na OOP. Na kratko sam probao CI i ne deluje toliko teško mada ja nisam nešto u tom oop fazonu.

offline
  • Code Developer
  • Pridružio: 23 Okt 2011
  • Poruke: 163

Šta mislite koji PHP framework je sada najtraženiji? Smile

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Ja mislim da je Zend najtraženiji...

offline
  • Code Developer
  • Pridružio: 23 Okt 2011
  • Poruke: 163

Tako sam i mislio, neprkosnoven je, ali mi je težak dosta za učiti, problem je dokumentacija...

Ko je trenutno na forumu
 

Ukupno su 1052 korisnika na forumu :: 40 registrovanih, 9 sakrivenih i 1003 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, ajo baba, Apok, Ben Roj, Bokiboks, Boris BM, BORUTUS, cavatina, cifra, dane007, darkangel, darkojbn, debeli, dragon986, DragoslavS, drimer, dushan, FOX, Frunze, gasha, ikan, magna86, Marko Marković, mercedesamg, Mercury, Mixelotti, mocnijogurt, mrav pesadinac, procesor, sevenino, sokars, stankolich, Stanlio, suton, vathra, Vlada1389, wizzardone, x9, ZetaMan, šumar bk2