200 likes | 385 Views
DWA 2. Lesson 01. Modularnost i funkcije. Deklaracija funkcije Ispis i vraćanje rezultata funkcije Slanje argumenata funkciji Slanje argumenata po referenci Uključivanje blokova koda i biblioteka funkcija Doseg varijabli funkcija. 1. Deklaracija funkcije.
E N D
DWA 2 Lesson 01
Modularnost i funkcije • Deklaracija funkcije • Ispis i vraćanje rezultata funkcije • Slanje argumenata funkciji • Slanje argumenata po referenci • Uključivanje blokova koda i biblioteka funkcija • Doseg varijabli funkcija
1. Deklaracija funkcije • function imeFunkcije() { // kod } • function imeFunkcije($argument) { // kod } • function imeFunkcije($arg1,$arg2) {// kod } • function imeFunkcije($polje) { // kod } • function imeFunkcije($opcionalni=1){//kod} • function imeFunkcije($argument,$opc=1)...
Vježbe • Napišite 5 različitih deklaracija funkcija • Proizvoljni nazivi funkcija • Proizvoljan broj argumenata • Kod ne pisati • staviti samo: { // kod } • zadnja vitičasta nikada ne smije biti u istom retku sa komentarom! • greška “unexpected $end” je siguran znak da neka vitičasta zagrada nije zatvorena !!!
Pisanje i čitanje dokumentacije • resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) • Prije naziva funkcije ide tip varijable koju funkcija vraća (“void” ako ne vraća ništa) • Naziv funkcije • Tip varijable obaveznog argumenta + argument • Tip varijable drugog obaveznog argumenta + argum. • U uglatim zagradama idu opcionalni argumenti
Vježbe • Pronađite deklaracije 5 različitih sistemskih funkcija php jezika koje smo do sada koristili i prema dokumentaciji napišite ispravne pozive tih 5 funkcija
2. Vraćanje rezultata funkcije • Funkcija može ispisati ili vratiti rezultat • Poziv funkcije koja sama ispisuje rezultat // kod zaglavljeStranice(); // kod • Ako želimo da funkcija vrati rezultat u kod funkcije treba staviti return $povratni_rezultat • Poziv funkcije koja vraća rezultat // kod $rez = pitagora($a,$b); // kod • Funkcije mogu vraćati polja (array) i objekte (resurse) poput recordseta ili veze na bazu podataka!
Vježbe • Napišite 2 funkcije koje same ispisuju rezultat i pozovite ih. • Napišite 2 funkcije koje vraćaju rezultat i dohvatite njihovu vrijednost u varijable, pa ispišite njihovu vrijednost
3. Slanje argumenata funkciji • Funkciji se može poslati neograničen broj argumenata različitih tipova • Da bi funkcija prihvatila argumente oni moraju biti navedeni u deklaraciji funkcije function tablica($r,$s) { // kod funkcije } $a = $_GET[‘redak’]; $b = $_GET[‘stupac’]; tablica($a,$b); • Unutar funkcije možemo koristiti samo $r i $s! • Vrijednost $r = $a, a vrijednost $s=$b
Vježbe • Napišite funkciju tablica() koja prihvaća dva rgumenta (željeni broj redaka i stupaca) te ispisuje HTML tablicu sa željenim brojem redaka i stupaca • Napišite funkciju potenciraj() koja prihvaća dva argumenta (broj koji se potencira i potenciju) te vraća rezultat u varijablu
4. Slanje argumenata po referenci • Poseban slučaj kada želimo izmjeniti vrijednost varijable bez vraćanja podataka iz funkcije function potenciraj(&$broj,$potencija=2) $a=3; potenciraj($a); echo $a; // 9 • Može prouzročiti bug-ove koje je vrlo teško uočiti
5. Uključivanje blokova i biblioteka • Moderne web aplikacije koriste uzorke (patterns) koji predviđaju visoku modularizaciju koda • dijeljenje koda u više datoteka • posebne datoteke za svaku klasu • posebne datoteke za skupine pomoćnih f-ja • posebne datoteke za sučelje aplikacije • ...
5. Uključivanje blokova i biblioteka • Za povezivanje (uključivanje) vanjskih datoteka koristimo 4 ugrađene funkcije • include(‘ime_datoteke.htm’); • include_once(‘ime_datoteke.htm’); • require(‘ime_datoteke.htm’); • require_once(‘ime_datoteke.htm’); • include – ako ne uspije = WARNING • require – ako ne uspije = FATAL ERROR
5. Uključivanje blokova i biblioteka • Datoteke mogu sadržavati samo komad HTML, CSS ili JS koda (npr. html zaglavlja i podnožja stranice) • U tom slučaju kod ne smije biti zatvoren u <?php i ?> oznake • header.inc • <html><head><title>Naslov</title></head> • uključujemo u glavnu stranicu index.php // kod include(‘header.inc’);
5. Uključivanje blokova i biblioteka • Datoteke mogu sadržavati deklaracije klasa ili funkcija • U tom slučaju se najčešće radi poddirektorij “classes” ili “functions”, a datoteke u tom direktoriju dobivaju nazive prema nazivu klase ili skupini funkcija • Npr. index.php classes/ Person.php Department.php functions/ database.php math.php
5. Uključivanje blokova i biblioteka • Ako sadrži klasu ili funkciju sadržaj datoteka koje se uključuju mora biti zatvoren u <?php i ?> blokove • Npr. u datoteci Person.php <?php class Person { // kod } ?>
Vježbe • Napravite jednostavan HTML dizajn stranice sa zaglavljem, središnjim dijelom i podnožjem • Razdijelite HTML kod zaglavlja od ostatka kod i spremite ga u zasebnu datoteku • Isto za podnožjem • Napravite PHP datoteku u koju ćete uključiti obje datoteke a između njih generirajte neki sadržaj (npr. ispis 10 brojeva u petlji ili sl.) • Možemo li to napraviti ako HTML dizajn sadrži tablice? (<table><tr><td>.....</td></tr></table>)
6. Doseg varijabli funkcija • Varijable deklarirane unutar klase ili funkcije nisu vidljive izvan funkcije • Varijable deklarirane izvan klase ili funkcije nisu vidljive unutar klasa ili funkcija • Svaki blok koda u PHP-u je zaseban • Varijable činimo dostupnima korištenjem ključne riječi global $ime_var
6. Doseg varijabli funkcija • Primjer: $c = mysql_connect(‘server’,’user’,’pas’,’baza’); function getPerson() { global $c; // upit u bazu } • i obratno...ali se to rijetko radi...
Vježbe • Napravite PHP datoteku koja na početku definira nekoliko varijabli. • Deklarirajte neku funkciju i pokušajte pristupiti tim varijablama • Dodajte ključnu riječ global ispred varijabli • Pokušajte ponovno • Pokušajte obratno (deklarirajte varijablu unutar funkcije.....)