You are on page 1of 21

1.

WWW - osnove (HTTP, HTML, URL)


-WWW(World Wide Web) je sistem medjusobno povezanih hipertekst dokumenata kojima se
pristupa pomocu web browsera. Hipertekst document je tekst sa linkovima.

Web strana je document pisan u HTML-u

Web sajt je skup web strana u okviru jednog domena

HTTP je mrezni protocol koji sluzi za prenosenje informacija na webu. Osnovna namena ovog
protokola je isporucivanje html dokumenta. HTTP je protokol za komunikaciju izmedju klijenta I
servera, koji funkcionise na principu zahtev/odgovor.

HTML je jezik koji sluzi za kreiranje web strana. To nije pravi programski jezik vec je jezik za
oznacavanje. HTML jezik se sastoji od elemenata, atributa I komentara.

URL je jedinstvena adresa resursa koja sluzi za lociranje odredjenog dokumenta na webu. Url adrese
sadrze informacije o protokolu koji se koristi za dolazenje do informacije (FTP, HTTP, HTTPS), nazivu
domena I nazivu fajla kome se pristupa.

2. Veb aplikacije
-Veb aplikacija je aplikacija kojoj se pristupa pomocu web browsera koriscenjem interneta. Veb
aplikacije se najcesce pisu u Javascript jeziku. Veb aplikacije su veoma popularno zbog sveprisutnosti
web browsera I zbog toga sto ne moraju da se instaliraju na hiljadama klijentskih racunara vec im se
jednostavno pristupa pomocu web browsera. Uobicajene veb aplikacije ukljucuju slanje poste,
internet trgovinu, aukciju, I druge. Jasnu razliku izmedju veb sajta I bilo kog tipa veb aplikacije nije
moguce precizno definisatu, jedino se donekle po izgledu mogu razlikovati, jer veb aplikacije
podsecaju izgledom na desktop aplikacije.

4. Arhitekruta veb aplikacije


MVC (Model View Controller) je softverski arhitekturni obrazac koji se često koristi za
implementiranje korisničkih interfejsa; stoga predstavlja popularan izbor za kreiranje arhitekture
veb-aplikacija. Najopštije rečeno, MVC deli aplikacioni logiku na tri odvojena dela, promovišući
modularnost, jednostavnu međusobnu saradnju i mogućnost ponovnog korišćenja. Sem toga,
aplikacije koje koriste ovaj model postaju fleksiblnije. Možemo posmatrati aplikaciju za kupovinu.
Ona može biti vrlo jednostavna: treba da sadrži listu imena, kvantita i cene za svaki proizvod koji
treba kupiti ove nedelje. Model definiše šta aplikacija treba da sadrži. Ako se stanje ovih podatka
promeni, onda model uglavnom treba da obavesti pogled (kako bi se prikazala nastala promena), a
ponekad kontroler (za slučaj da je potreba drugačija logika da bi se kontrolisao pogled koji se
ažurira). U primeru aplikacije za kupovinu, model bi odredio koje podatke sadrži lista (proizvod,
cena, itd) i koje proizvode već sadrži. Pogled definiše kako se prikazuju podaci aplikacije i prima
podatke koje treba da prikaže od modela. U primeru aplikacije za kupovinu, pogled bi definisao kako
se lista prezentuje koristinu. Kontroler sadrži logiku koja ažurira model i/ili pogled kao odgovor na
promene koje korisnik unosi u aplikaciju. Na primer, aplikacija za kupovina bi imala polja za unos
novih proizvoda i dugmad koja nam dopuštaju da dodamo nove proizvode ili obrišemo postojeće.
Ove akcije zahtevaju da se model ažurira. Zato se unos šalje do kontrolera, koji zatim manipuliše
modelom na odgovarajući način, i zatim šalje ažurirane podatke nazad pogledu. Pored toga,
aplikacija može pružati i mogućnost jednostavnog ažuriranja pogleda u smislu drugačije prezentacije
podataka. Na primer, listu proizvoda za kupovinu treba sortirati po nekom drugom kriterijumu,
kontroler može direktno da obavi ovu operaciju bez ažuriranja modela. Kod veb-aplikacija, model
podataka je najčešće sadržan u nekoj bazi podataka (što može biti tradicionalna baza podataka kao
što je MySQL, ili rešenje na klijentskoj strani kao što je IndexedDB). Kod koji kontroliše aplikaciju je
uglavnom napisan korišćenjem HTML-a i JavaScripta, dok je korisnički interfejs (pogled) definisan
HTML-om, CSS-om i možda JavaScriptom.

5. HTML Opste , Struktura strane


HTML je standardni jezik za obelezavanje koji se koristi za kreiranje veb strane. HTML jezik se sastoji
iz HTML elemenata. HTML elementi se sastoje iz pocetnog I zavrsnog taga. Postoje I neki html
elementi koji imaju samo jedan, samozatvarajuci tag, primer: <img/>. Tagovi se pisu u uglastim
zagradama. Na primer, element za paragraph se pise ovako <p>Neki tekst</p>. Osnovna struktura
html dokumenta izgleda ovako:

<!DOCTYPE html>

<html>

<head>

<title>Naslov sajta</title>

</head>

<body>

<p>Neki tekst</p>

</body>

</html>

<!DOCTYPE html> - oznacava da je document tipa HTML5

<head></head> - Zaglavlje strane. U njemu se pisu neke informacije o stranici koje nisu vidljive.

<body></body> - Telo strane. Ovde se pise sadrzaj strane koji je vidljiv.

6. HTML5, semanticki elementi


- Semanticki elementi jasno opisuju svoje znacenje, kako programeru tako I veb pregledacu. Pored
citljivosti koda vazni su I zbog SEO optimizacije.

Dva najcesce koriscena nesemanticka elementa su <div> I <span>


<div> sluzi kao genericki kontejner koji se koristi za grupisanje elemenata. Div element ima blokovski
nacin prikaza, sto znaci da pocinje novim redom. Treba se koristiti samo kada ni jedan drugi
semanticki element ne odgovara svrsi.

<span> takodje sluzi kao genericki kontejner. Jedina razlika od div-a je to sto <span> ima inline nacin
prikaza elemenata, sto znaci da ne pocinje novim redom, vec se nastavlja u istom redu.

U ranijim verzijama HTML-a, veb strane su se bazirale na div elementima kojima su dodavani atributi
tipa id=”nav” ili class=”header” kako bi se blize objasnilo cemu je namenjen taj div. HTML5 uvodi
novine u vidu semantickih elemenata. I time se smanjuje upotreba div elemenata. Sada svaki deo
veb strane ima svoj semanticki element koji jasno opisuje svoje znacenje.

Neki od novih elemenata u HTML5 su: <header><footer><article> …

<header> element obelezava zaglavlje veb strane. Nalazi se na samom pocetku strane I sadrzi
uglavnom naslov sajta, logo firme, formu za pretragu.

<footer> element obelezava poslednju sekciju na samom kraju veb strane. Uglavnom sadrzi
informacije o autoru, autorskim pravima, linkove ka stranama o politici privatnosti, cesto
postavljanim pitanjima…

<nav> element obelezava deo za navigaciju na veb strani. Sadrzi linkove ka stranama kao sto su “o
nama”, “kontakt”, “proizvodi”.

<article> element oznacava jednu nezavisnu celinu koja moze postojati sama za sebe, kao na primer
clanak u casopisu ili post na forumu.

<section> element oznacava jednu sekciju na veb strani koja je tematski definisana. Uglavnom sadrzi
naslov, tekst I slike.

7. CSS opste
- CSS je jezik koji opisuje stil veb strane. On sluzi za definisanje izgleda html elemenata. Pomocu CSS-
a mozemo da rasporedimo elemente na veb strani, menjamo boju, font teksta, itd. CSS moze da se
pise direktno u html dokumentu, ali je dobra praksa da se CSS pise u posebnom fajlu koji ce biti
povezan sa html dokumentom pomocu <link> elementa.

8. CSS selektori
- CSS selektori sluze da se definise na koje se delove dokumenta odnosi deklaracioni blok koji sledi,
odnosno koje delove zelimo da stilizujemo. Postoji vise nacina za selekciju elemenata:

- Selekcija tipova
-Selekcija klasa

-Selekcija ID-a

-Selekcija html atributa

Selekcija tipova:

Selektuje sve elemente istog tipa. Primer:

h1 { color: red; }

Svi h1 elementi ce biti crvene boje.

Selekcija klasa:

Selektuje sve elemente kojima je pridruzena odgovarajuca klasa. Primer:

<p class=”tekst”>Neki tekst</p>

.tekst {color: blue;}

Svi elementi kojima je pridruzena klasa tekst imace tekst plave boje.

Selekcija ID-a

Selektuje element sa zadatim ID-em. Primer:

<p id=”primer”>Neki tekst</p>

#primer {color: green;}

Element sa ID-em “primer” imace tekst zelene boje.

9. Progresivno poboljsanje
- Osnovni sadrzaj da radi u svim pretrazivacima

- Osnovna funkcionalnost da bude dostupna u svim pretrazivacima

- Izgled I raspored elemenata na strani da se definise u eksternom CSS-u

- Ponasanje da se definise u eksternom Javascriptu

- Semanticko obelezavanje celog sadrzaja


10. Responsive design
- Responsive design je prilagodljivi dizajn koji se prilagodjava uredjaju, odnosno dimenziji ekrana sa
koga se pristupa sajtu. Kada se sajtu pristupa sa laptopa, tableta I telefona, raspored elemenata na
sajtu bice razlicit kod svakog uredjaja. Responsive deisgn koristi koncept mreze. Na laptopu raspored
elemenata je najcesce 3 kolone po redu. Na tabletu bice 2 kolone po redu, a na telefonu samo jedna
kolona po redu, odnosno elementi se redjaju jedan ispod drugog. Slike su fleksibilne. Preko media
queries treba definisati prekidne tacke, to je uglavnom sirina ekrana najcesce koriscenih uredjaja. U
prekidnoj tacki izgled sajta ce se promeniti I prilagoditi uredjaju koji ima zadate dimenzije. Dimenzije
predstaviti u relativnim velicinama.

11. Javascript opste


- Javascript je skriptni dinamicki jezik klijent strane. Kreirao ga je Brendan Ajk 1995 godine. Prvobitno
se jezik zvao LiveScript ali je kasnije preimenovan u JavaScript posluzeci se marketinskim trikom jer
je u tom trenutku programski jezik Java kreiran od strane Sun Microsystems-a bio veoma popularan,
iako su Java I javascript semanticki potpuno razliciti jezici

Javascript je najpopularniji jezik web-a. Standardizovan je ECMAScript specifikacijom.

Javascript uz HTML i CSS predstavlja temelj za izgradnju veb strane. HTML i CSS opisuju sadrzaj I
izgled veb strane, dok javascript daje dinamiku I funkcionalnost veb stajtu. Javascript omogucava
dinamicko kreiranje ili menjanje elemenata. Vrsi obradu dogadjaja koji su nastali na primer klikom
na neko dugme, ucitavanjem stranice ili pokretom kursora misa.

Javascript je preporucljivo da se pise u zasebnom fajlu I kao takav treba da se poveze sa html fajlom
pomocu <script> elementa.

Osim u web-u, javascript se koristi I u PDF dokumentima.

12. JS funkcije
Funkcije su jedan od najbitnijih koncepata programskog jezika Javascript. One predstavljaju deo
koda koji moze vise puta da se izvrsava. Funkcije se deklarisu koriscenjem kljucne reci function
nakon koje sledi ime funkcije a potom otvorena I zatvorena zagrada u okviru koje mogu da se napisu
parametri. Primer:
function max(x,y) {

if(x>y){

return x;

else {

return y;

}
Ovakvu funkciju mozemo da pozovemo sa max(2,4), gde su 2 i 4 vrednosti argumenata.

Funkciju mozemo takodje definisati I na sledeci nacin preko promenljive.

var max = function(x,y) {


if(x>y){

return x;

else {

return y;

Ona se poziva na sledeci nacin:

max(2,4)

13. JS razlika izmedju deklaracije i izraza funkcije


- Funkcije u javascriptu mogu da se napisu na dva nacina: preko deklaracije funkcije i funkcijskog
izraza.

Deklaracija funkcije:

function square(a) {

return a*a;

Funkcijski izraz:

var square2 = function(a) {

return a*a;

Razlika je u tome sto se deklaracije funkcija ucitavaju pre izvrsenja koda, pa je moguce pozvati
funkciju pre njene deklaracije. Na primer funkciju square mozemo da pozovemo pre njene
deklaracije,a funkciju square2 ne mozemo, odnosno prijavice nam gresku jer square2 nije ucitan.
14. JS Hoisting
- Hoisting je prirodno ponasanje Javascripta u kome se sve deklaracije pomeraju na pocetak,
odnosno ucitavaju se pre izvrsenja koda. Tako da mozemo koristiti neku promenljivu ili neku
funkciju pre nego sto ih deklarisemo.

Primer promenljive:

x=10;

console.log(x);

var x;

Primer funkcije:

square(2);

function square(a) {

return a*a;

15. JS lambda funkcije


-Lambda ili anonimna funkcija je funkcija koja nema naziv. Lambda funkcije mogu da se proslede
drugoj funkciji kao parameter, takodje lambda funkcije mogu biti vracene drugoj funkciji kao
povratna vrednost.

Primer:

var a = [5,2,8,7,1];

var a2 = a.map(function(s){

return s+4;

})

Primer:
function counter() {
var count = 0;
return function() {
alert(count++);
}
}
Lambda funkcija se takodje koristi kada se definise funkcija preko funkcijskog izraza. Tada se
promenljivoj dodeli lambda funkcija.
16. JS Closure
- Closure je tehnika u programskom jeziku Javascript koja omogucava da unutrasnja funkcija koja je
kreirana u okviru neke roditeljske funkcije ima pristup promenljivama roditeljske funkcije. Sustina je
da kad se funkcija poziva ona osim liste parametara napravi I kontekst, tj. spisak promenljivih koje
funkcija koristi a koje su definisane izvan nje. Kontekst izvrsenja funkcije moze biti: globalni kad se
pokrene JS process, lokalni(kontekst funkcije) kad se pozove funkcija.

Primer:

function outer() {

var a = 'hello from outer';

return function inner() {

console.log(a);

17. IIFE
- IIFE je mehanizam u jeziku Javascript koji predstavlja deklaraciju neke funkcije uz njen automatski
poziv nakon deklaracije.

Primer:

var naKvadrat = (function(stepen) {

return function(x) {

return Math.pow(x, stepen);

})(2);

Imamo funkcijski izraz: var naKvadrat = izraz;

Gde je izraz = funkcija(2);

Tj. var naKvadrat = funkcija(2);

Funkcija poziva samu sebe nakon deklaracije sa parametrom 2;


18. JS nizovi
- Niz je struktura podataka u kojoj se mogu zabeleziti vise elemenata kojima se pristupa pomocu
indeksa. Nizovi u Javascript-u mogu se kreirati na dva nacina:

Preko literala:

var niz = [2,4,6];

Preko konstruktora:

var niz = new Array(2,4,6);

Pristupanje elementu niza:

var broj = niz[0]; // broj dobija vrednost 2;

Menjanje vrednosti elementa:

niz[1] = 5;

Broj elemenata niza moze se dobiti koriscenjem atributa length.

console.log(niz.length);

Dodavanje novog elementa u nizu postize se koriscenjem metoda push.

niz.push(9);

Jedna od metoda za obilazak niza je forEach():

var voce = [“jabuka”,”banana”,”kivi”];

voce.forEach(funkcija());

map:

var niz = [2,4,6];

var niz2 = niz.map(s => s+1);


filter:

var niz = [2,4,6,5,1,8,3];

var niz2 = niz.filter(s => s>3);

19. Prototipi
- Javascript je objektno orjentisani jezik koji se u osnovi bazira na prototipovima. Svi objekti
nasledjuju attribute I metode iz prototipa. Svaki objekat u sebi sadrzi reference na svoj prototip, koji
u sebi sadrzi reference na svoj prototip, itd. Tako dobijamo lanac prototipova na cijem vrhu se nalazi
Object.prototype. Na primer svaki kreirani niz ce nasledjivati attribute I metode iz Array.prototype.

let x = new Array(1,2,3,4,5);


Dakle, počev od niza x, dobijamo sledeći prototipski lanac:
x → Array.prototype → Object.prototype → null

Slično, svaka funkcija će kao svoj prototip imati Function.prototype, kom je prototip Object.prototype:
nekaFunkcija → Function.prototype → Object.prototype → null

function Person(first, last, age, eyecolor) {


this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}

Funkcija Person igra ulogu konstruktora. Ako zelimo da za sve instancirane objekte tipa Person
inicijalizujemo novi atribut, to cemo uraditi preko prototipa:

Person.prototype.nationality = "English";

20. Konstruktori preko IIFE-a


var counter = (function () {
var i = 0;
return {
get: function () {
return i;
},
set: function (val) {
i = val;
}
};
})();
counter.set(2);
counter.get();

21. JS ES5 klase


- U ES5 ne postoji kljucna rec class. Klase se mogu napraviti na 2 nacina.

1. Klasu definisemo pomocu konstruktorske funkcije:

function Robot(name) {

this.name = name;

this.energy = 100;

this.charge = function() {

this.energy++;

var r = new Robot(“Rendzer”);

Metodu mozemo takodje dodati u konstruktor pomocu prototipa. Na sledeci nacin:

Robot.prototype.charge = function() {

this.energy++;

2.Koriscenjem literala objekta:

Literali su skraceni nacin da se definise objekat u Javascript-u. Kako bi se kreirao prazan objekat
dovoljno je koristiti:

var o = {};

var apple = {

type: “macintosh”,

color: “red”,

getInfo: function() {

return this.color + “ “ + this.type;

}
22. JS ES6 klase
- Nova verzija ECMAScript 2015 donosi puno novina koje olaksavaju programiranje I doprinose
preglednosti koda. Najvaznije stvari su kljucna rec class i constructor.

class Pravouganik {

constructor(visina,sirina) {

this.visina = visina;

this.sirina = sirina;

povrsina() {

return this.visina * this.sirina;

Klase sada mogu da se napisu na prirodniji nacin kao I njeni metodi. Uvedena je kljucna rec
constructor za definisanje konstruktora.

23. JS ES6 nasledjivanje


- Jedno od najvaznijih svojstva objektno orjentisanog programiranja je nasledjivanje, odnosno
mogucnost da novu klasu baziramo na nekoj osnovnoj klasi. Obicno je ta osnovna klasa apstraktnija,
predstavlja neka osnovna ponasanja objekta, dok je nova klasa konkretnija I uvodi nove mogucnosti I
promene u starim ponasanjima. Uvodjenjem kljucne reci class u ECMAScript 2015, uvedena je I kljucna
rec extends koja oznacava da klasa nasledjuje neku drugu klasu. Sintaksa:

class Izvedena extends Osnova {}

class Animal {

constructor(name){

this.name = name;

speak(){

console.log(this.name + "makes a noise");

}
class Dog extends Animal {

speak(){

console.log(this.name + "barks");

const dog1 = new Dog("Rex");

dog1.speak(); // Rex barks

24. DOM, definicija I najcesce funkcije API-ja


- DOM (Document Object Model) je standardizovani API (nacin manipulacije) za strukturu
dokumenata HTML, XML, SVG. Napravljen je od strane W3C konzorcijuma. DOM nudi standarni skup
objekata za predstavljanje HTML I SML dokumenata kao I interfejs za njihom pristup I manipulaciju.
Pre uvođenja DOM-a je svaki Web čitač imao drugačiji pristup objektima, tj. strana koja je radila u
Exploreru verovatno nije radila u Netscape-u, itd. Bez DOM-a ne bi bilo moguće pisati kod koji će
raditi na svim Web pretraživačima. DOM svaki dokument vidi kao stablo, gde je na vrhu hijerarhije
body.

Najcesce koriscenje funkcije:

document.getElementById(“nekiId”)

Vraća HTML element sa navedenim ID-jem

document.querySelectorAll(“input[type="checkbox’"]”)

Izvršava CSS selekciju i vraća niz elemenata

document.querySelector(“input[type="checkbox’"]”)

Izvršava CSS selekciju i vraća prvi nađeni element

document.createElement(“div”)

Kreira novi div element u memoriji


parent.appendChild(child)

Dodaje element roditeljskom element

element.innerHTML = “neki tekst”

Menja sadrzaj elementa, odnosno izmedju pocetnog I krajnjeg taga upisuje “neki tekst”

element.style

Pristupa se CSS-u

25. Typescript osnove


- Typescript je besplatni programski jezik otvorenog koda kreiran od strane Majkrosofta. Za
typescript se kaze da je to javascript sa tipovima, jer je glavna novina koju typescript unosi staticka
tipizacija. Typescript kod se kompajlira u javascript. To znaci da idalje imamo dinamicku tipizaciju na
nivou javascript koda dobijenog kompajliranjem, s tim sto sada imamo jedan sloj iznad koji nam daje
prividnu staticku tipizaciju.

function greeter(person: string) {

return "Hello" + person;

var user = [1,2,3];

document.body.innerHTML = greeter(user);

// greska jer ocekuje string a user je niz integera;

var ime: string = “neko ime”;


26. Typescript, klase I nasledjivanje
- Tajpskript podržava klase nalik ECMAScript 6 klasama sa opcionim navođenjem informacija o
tipovima.

class Person {
constructor(name: string, age: number, salary: number) {
this.name = name;
this.age = age;
this.salary = salary;
}
}

Nasledjivanje je jedno od najvaznijih svojstva objektno orjentisanog programiranja koje omogucava da


jedna klasa nasledi drugu klasu.

class Animal {

constructor(public name: string) {

move(meters: number) {

console.log(this.name + "moved" + meters + "m.");

class Snake extends Animal {

constructor(name: string) {

super(name);

move() {

console.log("Slithering...");

super.move(5);

}
27. Typescript, sabloni
class Greeter<T> {

greeting: T;

constructor(message: T){

this.greeting = message;

greet() {

return this.greeting;

var gr1 = new Greeter<string>("hello world");

console.log(gr1.greet());

28. XML tehnologije


- XML (Extensible Markup Language) je jezik za označavanje. Standardizovan je specifikacijom 1.0 koju je
objavio W3C konzorcijum. Dizajniran je s namerom da naglasi jednostavnost, generalnost i
upotrebljivost širom interneta. Na stotine formata je bazirano na XML sintaksi. Aplikacije iz .NET
frejmvorka koriste XML sintaksu.

Karakteri koji čine XML dokument se dele na znake za obeležavenje i sadržaj. Razlika između njih se
može veoma lako odrediti pomoću nekoliko jednostavnih sintaksnih pravila. U opštem slučaju, znak za
obeležavanje počinje znakom < i završava se znakom > (tagovi). Stringovi koji nisu znaci za obeležavanje
predstavljaju sadržaj.

Postoje tri vrste tagova: otvoren tag (na primer, <section>), zatvoren tag (na primer, </section>), tag
praznog elementa (na primer, <line-break/>).

Logička reprezentacija komponente koja se sastoji od otvorenog taga, sadržaja i zatvorenog taga naziva
se element. Ukoliko sadrzaj elementa sadrzi druge elemente, oni sa nazivaju potomci. U okviru
otvorenog taga mogu se napisati atributi, koji se sastoje od para “ime” – “vrednost”.
29. XML namespace
- XML nejmspejsovi se koriste kako bi XML dokumentu obezbedili elemente sa jedinstvenim imenom.
XML instanca može da sadrži element ili imena atributa iz više od jednog XML rečnika. Ako se svakom
rečniku dodeli nejmspejs, dvosmislenost između elemenata sa istim imenom se može rešiti. Jednostavan
primer je XML instanca koja ima podatke o kupcu i naručenom proizvodu. I element koji predstavlja
kupca i element koji predstavlja proizvod bi mogli da imaju element-dete sa imenom id. Reference na
element id bi stoga bile dvosmislene; ako se postave u druge nejmspejsove, dvosmislenost nestaje.

30. PHP, opste


- PHP je serverski skriptni jezik dizajniran za razvoj na vebu. Kreiran je 1994. Godine. PHP se moze pisati
direktno u HTML kodu, ali je dobra praksa da se pise u zasebnom fajlu. PHP kod se obično procesira
pomoću PHP interpretatora koji je implementiran kao CGI modul. Sintaksa jezika je slicna kao javascript.
PHP je takodje I jezik dinamicnih tipova.

PHP kod pocinje <?php, a zavrsava se ovako ?>.

Sve promenljive pocinju znakom $. Dok konstante ne sadrze znak $.

Koriscene navodnika (“) umesto apostrofa (‘) u radu sa stringovima dovodi do evaluiranje promenljivih,
pa tako ako napisemo:

$prom = “Marko”;

$prom1 = “Ja se zovem $prom”; // izlaz: Ja se zovem Marko

$prom2 = ‘Ja se zovem $prom’; // izlaz: Ja se zovem $prom

Nizovi u PHP-u mogu biti indeksirani:

$a[0] = “Dragan”;

$a[1] = “Zoran”;

$a[] = “Maja”; // dodavanje elementa na sledece prazno mesto

I asocijativni:

$boja[“crna”] = “FFFFFF”;

Indeksi asocijativnih nizova nisu brojevi vec su stringovi.


31. PHP superglobalne promenljive
- Superglobalne promenljive su predefinisane promenljive koje definise sam PHP. One su superglobali,
sto znaci da se vide u svim funkcijama I nije potrebno koriscenje kljucne reci global. To su:

$_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $_FILES, $_ENV, $GLOBALS, $_SERVER

$_POST – Asocijativni niz koji sadrzi podatke poslate sa klijenta preko POST metode.

$_GET – Asocijativni niz koji sadrzi podatke poslate sa klijenta preko GET metode.

$_REQUEST – Asocijativni niz koji predstavlja uniju $_POST i $_GET niza.

$GLOBALS – Asocijativni niz koji sadrzi sve globalne promenljive.

$x = 75;
$y = 25;

function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z;

$_SERVER – Sadrzi informacije o zaglavljima, putanjama I skriptama

echo $_SERVER[“SERVER_NAME”] // www.elfak.ni.ac.rs na primer.

32. Prenos podataka sa klijenta na server


- Slanje podataka sa klijenta na server moze se obaviti pomocu dve metode: POST i GET.

POST metodom mozemo preko <form> elementa poslati podatke sa klijenta na server:

<form method="post" action="index.php">

<input type="text" name="ime">

<input type="text" name="prezime">

<input type="submit">

</form>

Popunjavanjem input polja I klikom na dugme submit u superglobalni niz $_POST upisuju se podaci. U
$_POST[“ime”] upisuje se vrednost koju je uneo korisnik u polju za ime. U $_POST[“prezime”] upisuje se
vrednost koju je uneo korisnik u polju za prezime.

POST metodom se salju osetljivi podaci kao sto su sifre. Podaci koji se salju se ne vide u adresi.
GET metoda: Podaci su vidljivi u adresi. Na primer: www.nekidomen.com/search?sourceid=525

U superglobalni niz $_GET ce se upisati podatak $_GET[“sourceid”] = 525

33. PHP klase I objekti


- Klase u jeziku PHP pocinju kljucnom reci class nakon koje sledi ime klase koje moze biti bilo koja rec
osim rezervisanih reci PHP-a. Nakon imena sledi par viticastih zagradi. Klasa moze da sadrzi konstante,
attribute I funkcije. Atributi pocinju jednim od modifikatora pristupa public, private, protected, nakon
koga sledi ime promenljive koje pocinje znakom $. Nestatickim atributima iz konteksta klase se pristupa
$this->atribut.

Konstante klase pocinju kljucnom reci const, naziv konstante ne sadrzi znak $. Pristup iz konteksta klase

self::konstanta.

Konstruktor se definise pomocu metode __construct().

Instanca klase se kreira pomocu operatora new.

Primer:

$obj = new MojaKlasa();

34. PHP nasledjivanje


- Nasledjivanje je jedno od najvaznijih svojstva objektno orjentisanog programiranja. Kljucna rec koja
oznacava da jedna klasa nasledjuje drugu je extends. U PHP-u je dozvoljeno samo jednostruko
nasledjivanje klasa, tj klasa moze da ima samo jednu osnovnu klasu.

Nasleđeni atributi i metode se mogu preklopiti (override) u izvedenoj klasi tako što se deklarišu atributi i
metode koje imaju iste nazive kao i u osnovnoj klasi

Da bi se zabranilo preklapanje, metodama osnovne klase se stavlja modifikator final

Preklopljenim atributima i metodama osnovne klase se može pristupiti se parent::<atribut_ili_metoda>

Roditeljski konstruktori se ne zovu implicitno ako nasleđena klase definiše konstruktor. Potrebno je
načiniti eksplicitni poziv parent::__construct().

35. Veb servisi


- Veb servis je softverski system dizajniran tako da podrzi interakciju(razmenu podataka) izmedju masina
preko mreze. Za razmenu podatka se koristi XML ili JSON. Poznati primeri su Google Maps API i EBay
Shopping API.

Veb servisi mogu biti SOAP ili REST.


36. SOAP
- SOAP je protokol racunarskih mreza za razmenu informacija u implementaciji veb servisa. Koristi XML
format poruka. Za prenos koristi protokol HTTP. SOAP veb servisi su komplikovani, jedino citljivi od
strane masina.

37. REST
- REST je arhitekturni stil. Koristi JSON za prenos podataka.

HTTP + URI

Sve moguce crud operacije se definisu pomocu HTTP request methoda (get, post, update, delete).

URI definise nad kojim resursom se vrsi operacija.

GET – preuzima trazeni objekat

PUT – Azurira navedeni objekat, a ako ne postoji, pravi novi

POST – Uglavnom se ne koristi

DELETE – Brise navedeni objekat

38. SPA aplikacije


- Single Page Application (SPA) je web aplikacija kod koje se celokupna interakcija sa korisnikom odvija na
jednoj stranici. Takva stranica se učita jednom i dinamički ažurira tokom korišćenja. Jedna od
najpopularnijih tehnologija za razvoj SPA su JavaScript frejmvorci AngularJS i React. Pri interakciji sa
tradicionalnim web aplikacijama server odgovara zahtevu klijenta slanjem nove stranice koja se ucitava
na strani klijenta. Kod SPA aplikacija serveru se upućuje AJAX zahtev i onodgovara potrebnim podacima,
najčešće u JSON formatu.

39. RPC
- RPC (Remote Procedure Call) je poziv udaljene procedure. To je mehanizam za poziv procedura na
udaljenim masinama. Ovo je primer klijent-server interakcije. Klijent poziva proceduru koja je
implementirana na udaljenoj masini (serveru). Klijent salje zahtev udaljenom server za izvrsenje
odredjene procedure. Server odgovara klijentu, i program nastavlja svoj process. Klijent je blokiran dok
ceka da mu server odgovori.
40. XML vs HTML
- XML sluzi za kreiranje I struktuiranje dokumenta. HTML sluzi za kreiranje strukturnih dokumenta koji
imaju semanticko znacenje. Ukratko XML je razvijen da opise podatke, a HTML da ih predstavi.

41. JSON
- JSON (JavaScript Object Notation) je lak format za razmenu podataka. Ljudima je lako da ga citaju I pisu
a racunarima da ga analiziraju. To je tekstualni format podataka koji je potpuno nezavistan od jezika.
JSON je format koji se najcesce koristi za asinhronu komunikaciju izmedju klijenta I servera.

42. JSON vs XML


JSON objekat:

{"employees": [

{"firstName": "John", "lastName": "Smith"},

]}

XML objekat:

<employees>

<employee>

<firstName>John</firstName> <lastName>Smith</lastName>

</employee>

</employees>

43. AJAX
- AJAX (Asynchronous JavaScript and XML) je skup klijentskih tehnologija radi kreiranja asinhronih veb
aplikacija. Koristeci AJAX moguce je dinamicki menjati sadrzaj stranice bez ponovnog ucitavanja stranice.
Iako se naziva AJAX uglavnom se koristi JSON a ne XML. JavaScript i objekat XMLHttpRequest pružaju
metode za asinhronu razmenu podataka između klijenta i servera.

You might also like