You are on page 1of 59

Uvod u PHP

Core PHP programming


Agenda kursa – core PHP
• Uvod u PHP
• Tipovi podataka, promenljive i operatori
• Nizovi
• Kontrola toka
• Funkcije
• Osnovni IO (File-ovi i direktorijumi)
• Validacija i rukovanje greškama i izuzecima
• Osnove OOP-a i OPHP-a

Agenda
Šta je PHP? (PHP Hypertext Preprocessor )
• PHP je programski jezik
• Upotrebljiv je u opšte svrhe, ali je odomaćen na
polju web aplikacija
• Svrha mu je dinamičko generisanje sadržaja
web aplikacije, na serveru
• Najčešće se nalazi u kombinaciji Linux, Apache
web server i Mysql (LAMP)
• Jezička sintaksa je bazirana na C-u i perlu
Šta je php
Kako je nastao php?
• 1994 – Rasmus Lerdorf
o Personal Home Page (Tools)
/ Forms Interpreter
o Verzije 1 I 2
• 1997 - Zeev Suraski i Andi Gutmans
o Verzija 3+
• Aktuelna verzija PHP-a je 5.5
• Očekuje se izlazak verzije 7
Na kojim sistemima se može koristiti

• Linux
• Windows
• MacOS

- Mnoge distribucije Linux-a u svojim paketima, podrazumevano


sadrže i PHP. Među njima je i MacOS.
- Windows ne sadrži php podrazumevano
Šta je neophodno da bi PHP funkcionisao?
• PHP interpreter
• Web server
• Poželjna je i baza podataka (MySql)
• Može se koristiti i neki od kompletnih web server paketa (xampp,
wamp...)

WAMP XAMPP
http://www.wampserver.com/ http://www.apachefriends.org/en/xampp.html
Radno okruženje
Minimum – tekst editor
Notepad++
http://notepad-plus-plus.org/
Dreamweaver *
http://www.adobe.com/downloads/
Eclipse
http://www.eclipse.org/downloads/
Zend Studio *
http://www.zend.com/products/studio/
NuSphere *
http://www.nusphere.com/download.php.ide.htm
Jetbrains PHP Storm *
Http://www.jetbrains.com/phpstorm/
Sublime text
http://www.sublimetext.com/
Prvi php program...
• Php program se čuva u obliku teksta i u tom obliku se startuje
• Da bi php program bio startovan, neophodno je da bude tretiran od strane
php interpretera
• Php interpreter je program koji moramo imati kako bismo startovali php kod
• Da bi proverili da li php interpreter postoji na računaru, u konzoli kucamo php
(eventualno se može dodati switch –v ili -i)
• Nakon (pokušaja) izvršenja komande, znaćemo da li php postoji na sistemu.

Nije dobro, php nije prepoznat Dobro je, php je prepoznat


Kako podesiti php
• Varijanta 1, podešavanje putanje iz konzole (kratkoročno, ali
bezopasno po sistem)

Putanja na kojoj se nalazi php


Kako podesiti php
• Varijanta 2, podešavanje putanje pomoću GUI-ja

Putanja na kojoj
se nalazi php

Ova intervencija daje efekat tek nakon restarta konzole


Kreiranje php programa
• Pup program se čuva u običnom tekstualnom fajlu, a ovaj fajl
možemo kreirati pomoću običnog tekstualnog editora
Zarad lakšeg snalaženja sa fajlovima
i njihovim ekstenzijama, dobro je
onemogućiti sakrivanje ekstenzija za
poznate tipove i omogućiti prikaz
skrivenih fajlova

bilo koji folder->view->options->view


Startovanje php programa
• Da bi php program bio startovan, u konzoli treba kucati: php
NAZIVFAJLA.
Kako php funkcioniše?
• Php je INTERPRETER
o Prevodi kod koji smo napisali u ljudski razumljivoj sintaksi u jezik
koji računar razume
o Izvršava prevedeni kod odmah nakon prevođenja (ovo ga čini
interpreterom)

Mi kažemo php-u: Php kaže procesoru


Prikaži poruku Hello from my program 001010010100101010101010
Unutar fajla, mi kažemo php-u Php ono što smo mu rekli, prevodi
da prikaže poruku Hello from my na jezik koji proces može da
program. Ovo je nešto što razume. A jedino što procesor
razumemo mi i php interpreter, ali zapravo može da razume, jesu
ne i procesor nule i jedinice
Kako tačno php funkcioniše?
• Prilikom aktivacije php programa, php interpreter obavlja nekoliko akcija:

1. Php se inicijalizuje, čita konfiguracione fajlove i učitava potrebne module


2. Parsiranje (php proverava da li je kod sintaksno ispravan)
3. Prevođenje (kreirani kod se prevodi u jezik koji poznaje php (opcode))
4. Opcode se pretvara u mašinski kod (nule i jedinice)
5. Mašinski kod se isporučuje procesu na izvršavanje (izvršava se php program)
6. Php se deaktivira / deinicijalizuje. Moduli se deaktiviraju, i raspušta se
memorija

Da li sve ovo moramo znati da bi napisali php program? NE, dovoljno je da


napišemo sintaksno ispravan php kod i startujemo ga pomoću naredbe php.
PHP u kontekstu web aplikacije
• Kako je moguće od ...Nastane nešto ovakvo
nečeg ovakvog...

... i koja je uloga php-a, i nas kao autora php programa u


svemu tome?
PHP u kontekstu web aplikacije
• PHP se ređe koristi u standalone varijanti
• Mnogo češće, PHP se koristi u kombinaciji sa web serverom
• Iako je PHP moguće kombinovati sa raznim serverima,
najčešće dve kombinacije su PHP + NGINX i PHP + Apache
web server
• Najčešća, najstarija i najproverenija kombinacija jeste PHP +
Apache web server, i ovo je kombinacija koja će biti
obrađena u nastavku ovog, i kurseva koji slede
Web server
• Servis (program) koji skladišti i prosleđuje web sadržaje
korisnicima na mreži
• Takođe, u produkciji, server je računar na kome se program
web server izvršava
Kako php radi funkcioniše
u kombinaciji sa web serverom
• U web aplikaciji, php nikada ne pozivamo direktno (kao u prethodnim
primerima), već to obično za nas radi web server
• Da bi web server ovo mogao da uradi, moramo mu to eksplicitno naglasiti
• Ovo činimo u konfiguracionom fajlu web servera (kod Apache web servera, to je
fajl httpd.conf (u wamp-u: c:/wamp/bin/apache/apache2.#.#/httpd.conf))

• Takođe, apache web serveru moramo reći: “tretiraj sve zahteve sa ekstenzijom
php na specifičan način”:

• Nakon ovih izmena, apache web server će moći da startuje php aplikacije.
• Postavlja se pitanje, šta je onda to što web programiranje čini komplikovanim?
Kako funkcioniše i šta radi web server?
• Skladišti web stranice
• Prihvata i prosleđuje korisničke pozive
• Šalje (HTML) sadržaj putem HTTP protokola
Život web dokumenta
• Kako je moguće da kucanjem sledećeg u adresi browsera...

• Dobijemo sledeću stranu u prozoru browsera:

?
Život web dokumenta
• Browser, u mnoštvu sadržanih opcija ima dve ključne:
o HTML parser / renderer (grafički formatira sadržaj
pomoću html tagova)
o User Agent (komunicira sa web serverom u ime korisnika)
• Bez ovih opcija, browser nije browser (ali je i dalje klijent).
Ali, može postojati program koji nema obe opcije. Na primer,
sledeći programi nemaju HTML parser, ali imaju user agent-a:
Šta radi HTML parser?
• HTML parser / renderer grafički predstavlja HTML kod
• Na primer, sledeći fajl, po otvaranju u browseru...

...daje sledeći rezultat


Šta radi user agent?
• Analizira adresu koju smo uneli u brower
• Na osnovu analize unete adrese, formira HTTP zahtev
• Upućuje HTTP zahtev ka web serveru
• Čeka HTTP odgovor od web servera
• Analizira strukturu HTTP odgovora
• Preuzima sadržaj HTTP odgovora, i prikazuje ga (ukoliko postoji)

HTTP Request
GET / HTTP/1.1 socket
Host: www.it-akademija.com ip adresa + port
(npr: 71.25.30.10:80)

HTTP Response
HTTP/1.1 200 OK
Host: www.it-akademija.com
Vežba 1 – Analiza http zahteva i odgovora
• Aktivirajte konzolu
google chrome-a
(kombinacijom tastera
ctrl+shift+i)
• Odaberite network
paletu
• Otvorite neku stranu
• Pogledajte
novokreirani sadržaj
paleta Headers i
Response
Lokalni vs globalni server
• Web server može biti lokalni ili globalni
• Ova podela ne mora da ima veze sa samim serverom, već sa mrežnim rutiranjem
• Najčešće se, za potrebe izgradnje web
aplikacije, koristi lokalni web server.
Tačnije, lokalna adresa (localhost)
• Localhost je naziv kojim se računaru
na kome se trenutno nalazimo,
pristupa putem mreže
• Wamp server podrazumevano sadrži
web server i sve funkcioniše bez
dodatnih podešavanja, pa web serveru
možemo pristupiti kucanjem lokalne adrese
u web browseru: http://localhost
• (ako ne radi, pokušajte 127.0.0.1 umesto localhost)
Distribucija fajlova pomoću web servera
• Da bi sopstvenom fajlu mogli da pristupimo putem web servera, treba da ga
kopiramo u direktorijum dokumenata web servera. U podrazumevanoj apache
konfiguraciji koja dolazi sa wamp-om, ovaj direktorijum je: c:/wamp/www.
• Na razlicitim distribucijama apache-a i operativnih sistema, ovaj direktorijum
može biti drugačiji, ali se takođe može podesiti u konfiguracionom fajlu
apache web servera
• Jednostavnim kopiranjem fajla u pomenuti direktorijum, fajl će biti dostupan
putem web servera

• Primećujemo da struktura direktorijuma na fajl sistemu, odgovara strukturi koju


eksponira web server
MIME tipovi i ekstenzije
• Da bi server angažovao php interpreter, dokument koji se od njega traži mora
imati ekstenziju php
• Ako bismo fajlu iz primera promenili ekstenziju, tako da bude .php umesto
.txt, rezultat bi na izlazu bio za nijansu drugačiji, ali bi se pozadinski
mehanizam dijametralno razlikovao

.php .txt

browser browser

server

interpreter server
.php .txt
Vežba 2
• Napravite tri fajla na web serveru. Jedan treba da bude
tekstualni dokument (.txt), drugi da bude html dokument
(.html), a treći php dokument (.php)
• Otvorite sva tri dokumenta u browseru
• Jako je važno da ni jedan od tri dokumenta ne preuzmete
direktno sa fajl sistema, već isključivo putem web servera

Dobro je Nije dobro


Pravila pisanja PHP koda

Core PHP programming


Php sintaksa
• Da bi apache web server angažovao php interpreter, traženi
fajl mora imati ekstenziju php
• Php interpreter tekstualni sadržaj prosleđuje na izlaz u obliku
u kom ga je pročitao (bez bilo kakvog procesiranja):
fajl.php
Hello World PHP Hello World

• Da bi php interpreteru dali do znanja da treba da procesira


neki deo fajla, deo koji treba da bude procesiran označavamo
php tagom: <?php
PHP tagovi
• PHP tagovi postoje u tri oblika:
o Standard tag <?php ?>
 Sve što se nađe u okviru ovog taga, biće tretirano kao php kod
o Shorthand tag <? ?>
 Sve što se nađe u okviru ovog taga, biće tretirano kao php kod
 Ovaj tag može se aktivirati i deaktivirati u php konfiguraciji
o Expression tag <?= ?>
 Sve što se nađe u okviru ovog taga biće emitovano na izlaz“
o Fajlovi koji sadrže samo php kod, ne moraju imati zatvarajući php tag
PHP tagovi
• PHP tagovi se mogu naći na bilo kom mestu u dokumentu (osim u okviru
postojećih php tagova)
• Sve što se dešava oko php tagova, php interpreteru nije od interesa, ali sve
unutar njih mora biti isključivo validan, sintaksno ispravan, php kod

Upravo rezultat pokušaja startovanja koda iznad dokazuje da unutar


php koda ne može da se piše bilo šta:

Pokušajte da ustanovite kakva je greška u pitanju i u


kom se delu procesa izvršavanja php koda dogodila
PHP sintaksa
• U php-u:
o Svaka linija mora biti kompletirana oznakom ;
o Nije bitno koliko praznog prostora ima između linija, php ovaj
prostor ignoriše
• Promenljive počinju sa znakom string ($)
• Prvi znak iza znaka string sme biti samo slovo ili nespecijalni karakter
• Reči u promenljivima dobro je razdvajati sa donjom crtom moja_varijabla ili
velikim slovom mojaVarijabla (camel case)
• PHP JE case sensitive
PHP sintaksa – tačka zarez na kraju linije
• Izjave (linije) se odvajaju sa tačka-zarezom
Fali oznaka ;

• Program će prijaviti grešku

• Ispravno
je:
PHP sintaksa – prazne linije
• Prazan prostor nije relevantan
• Levi i desni kod daju isti rezultat na izlazu
PHP sintaksa – pravila kodiranja
• Promenljive počinju sa znakom string ($) • Ispravan kod
• Prvi znak iza znaka string
sme biti samo slovo
ili nespecijalni karakter

• Neispravan kod
PHP sintaksa – deklaracija varijabli

• DA
$x
$mojaVarijabla
$_varijablaX
• NE
$1mojaVarijabla
$\mojaVarijabla
PHP sintaksa – deklaracija promenljivih
• Reči u promenljivima dobro je razdvajati sa donjom crtom
moja_varijabla ili velikim slovom mojaVarijabla (camel case)
• Treba izbegavati neintuitivne ili predugačke nazive promenljivih
• Ispravni nazivi promenljivih

• Ne baš sjajni nazivi promenljivih


PHP sintaksa – case sensitivity
• PHP JE case sensitive
• $x i $X u PHP-u predstavljaju dve različite
promenljive i zato kod sa leve strane neće
dati željeni rezultat
PHP sintaksa – blokovi koda
• Blokovi se pišu u vitičastim zagradama
Započet blok

Završen blok
PHP sintaksa – definisanje klasa
• Klase je dobro pisati velikim početnim slovom, a funkcije malim

Klasa

Funkcija
Komentarisanje koda
• Jako dobrom praksom, smatra se komentarisanje koda
• Pod komentarisanjem, podrazumeva se objašnjavanje delova koda
ljudskim jezikom
• Komentari se označavaju na specijalan način, kako se php ne bi
zbunio, obzirom da izjave koje sadrže komentari, za njega nisu
razumljive
• Komentari su dobri jer:
o Olakšavaju snalaženje u kodu
o Omogućavaju da se brzo onemogući neki deo koda ali ne i trajno izgubi
o Olakšavaju dokumentovanje koda
• Komentari su neprikosnovena komponenta timskog rada
Implementacija komentara
• Komentare srećemo u dve
forme:
o Jednolinijski
 Sve od početka do kraja linije,
biće ignorisano od strane
prevodioca, ali ne i dalje od toga
o Višelinijski
 Sve što se nalazi unutar početne i
krajnje oznake komentara se
ignoriše od strane prevodioca
https://bitbucket.org/snippets/vmaric/qeyr67
Vežba 3
• Sledeći program bi trebalo
da prikaže površinu i obim
kruga ali ne funkcioniše
• Potrebno je ispraviti
sintaksne greške u
programu, kako bi
proradio
• Pokušajte da
komentarišete kod i
objasnite šta koja linija
radi
https://bitbucket.org/snippets/vmaric/beEMBL
Vežba 3
• Sledeći program bi trebalo
da prikaže površinu i obim
kruga ali ne funkcioniše
• Potrebno je ispraviti
sintaksne greške u
programu, kako bi
proradio
• Pokušajte da
komentarišete kod i
objasnite šta koja linija
radi
Upotreba alata git
Preuzeti sa adrese: git-scm.com
Još različitih problema sa sintaksom
Php skripte imaju neispravnu
sintaksu. Pokušaj da ih popraviš i
startuješ.
Skripte preuzmi sa git
repozitorijuma

https://vmaric@bitbucket.org/
vmaric/phpex.git

pcex01
Stress i load
• Da bismo bili sigurni da web aplikacija može da podnese očekivani
broj korisnika, neophodno je da je tokom rada više puta tretiramo
stress i load testovima kako bismo bili sigurni da nismo napravili
kritične greške u performansama
• Jednostavan, a efikasan alat kojim se mogu izvršiti ova dva testa, već
postoji u sklopu apache distribucije (nema ga u svim distribucijama).
Ovaj alat se zove apache bench (ab ili ab.exe)
• Da bi izvršili testiranje pomoću apache bench-a, startujemo ga sa
odgovarajućim parametrima (dva ključna prekidača su n – broj
zahteva i c – broj korisnika)
Vežba 4 (pcex02)
• Prethodno dizajniranu prezentaciju sajta za online prodaju dvd-ova je potrebno smestiti na
web server, tako da se ne otvara direktno sa fajl sistema. Prezentacija mora biti spremna
za uvođenje serverske dinamike
Zaključili smo...

• Šta je web server i šta


radi?
• Server prihvata zahteve od klijenta, pronalazi
dokumente na fajl sistemu ili ih generiše pomoću
serverske skripte, i šalje ih klijentu.
Zaključili smo...

• Šta je web klijent i šta radi?


Šta je web klijent i šta radi?

• Klijent - Šalje zahteve web serveru, prihvata


odgovore i prikazuje ih korisniku u razumljivoj
formi
Zaključili smo...

• Kojim jezikom se
sporazumevaju web server i
web klijent?
Kojim jezikom se sporazumevaju web server i web klijent?

• HTTP – Web server i web klijent se


sporazumevaju jezikom koji se zove HTTP. Ovo je
zapravo protokol koji čije su dve osnovne
komponente zahtev i odgovor (request i
response)
Zaključili smo...

• Šta je php i šta radi?


Šta je php i šta radi?
• PHP – Programski jezik kojim se kreiraju programi koji
se izvršavaju u kontekstu web servera. Služi da unese
dinamiku u html stranu. Odnosno, da izvrši njeno
formatiranje.
Šta je važno znati vezano za sintaksu php-a?

• Šta je važno znati vezano za sintaksu


php-a?
• Sintaksa php-a
o Kod se mora nalaziti u php tagovima (<?php ?>)
o Linije moraju biti kompletirane oznakom ;
o Promenljive se pišu uvek sa oznakom $ ispred naziva

You might also like