Programski jezik PHP: Vodič za početnike i napredne korisnike
PHP (Hypertext Preprocessor) je popularan server-side skriptni jezik otvorenog koda dizajniran prvenstveno za razvoj web aplikacija. Ono što je započelo kao skup jednostavnih CGI binarnih datoteka za praćenje posjeta web stranici, razvilo se u snažan i široko korišten programski jezik koji pokreće značajan dio interneta, uključujući divove poput Facebooka i WordPressa.
Uvod u PHP
Zamislite web stranicu. Kada je otvorite, vi zapravo šaljete zahtjev poslužitelju. Za razliku od statičnih HTML stranica koje poslužitelj samo pošalje natrag vašem pregledniku, PHP omogućuje poslužitelju da dinamički generira sadržaj prije nego što ga pošalje. To znači da PHP kod izvršava na poslužitelju, a preglednik prima samo rezultat tog izvršavanja, obično u obliku HTML-a, CSS-a i JavaScripta. Zato je PHP jezik strane poslužitelja (server-side language).
Zašto je PHP tako popularan?
Nekoliko je ključnih razloga zašto je PHP zadržao svoju poziciju na vrhu:
- Jednostavnost korištenja: Sintaksa PHP-a je relativno jednostavna za učenje, posebno za one koji su već upoznati s C, Javom ili Perlom.
- Široka podrška: Ogromna zajednica, bogata dokumentacija i bezbroj resursa dostupnih online.
- Platformska neovisnost: PHP radi na gotovo svim operativnim sustavima (Linux, Windows, macOS) i podržava većinu web poslužitelja (Apache, Nginx, IIS).
- Integracija s bazama podataka: Izvrsna podrška za različite baze podataka, uključujući MySQL, PostgreSQL, Oracle, SQLite i mnoge druge.
- Otvoreni kod i besplatan: Potpuno je besplatan za korištenje i distribuciju.
- Brzina: Modernije verzije PHP-a (PHP 7.x i PHP 8.x) donijele su značajna poboljšanja performansi, čineći ga iznimno brzim.
Povijest i evolucija
PHP je kreirao Rasmus Lerdorf 1994. godine. U početku je bio zvan “Personal Home Page Tools”. Godine 1997. razvijena je verzija PHP/FI 2.0. Pravu prekretnicu donijeli su Andi Gutmans i Zeev Suraski koji su potpuno prepisali parser i stvorili PHP 3.0, a kasnije i Zend Engine koji pokreće PHP 4.0 i sve kasnije verzije.
Verzije 5.x donijele su značajna poboljšanja u objektno orijentiranom programiranju (OOP), dok su PHP 7.x i 8.x revolucionalizirale performanse i uvele mnoge moderne značajke poput deklaracija tipova, novih operatora i poboljšanja u rukovanju greškama.
Gdje se PHP koristi?
PHP se koristi za izradu širokog spektra web aplikacija:
- Dinamičke web stranice: Većina web stranica koje vidite danas su dinamične. PHP omogućuje dohvaćanje podataka iz baze, prikaz personaliziranog sadržaja i interakciju s korisnicima.
- Sustavi za upravljanje sadržajem (CMS): Najpoznatiji CMS, WordPress, pokreće PHP. Joomla, Drupal i Magento također su napisani u PHP-u.
- E-commerce aplikacije: Online trgovine koje zahtijevaju upravljanje proizvodima, košaricama i transakcijama.
- API-ji (Application Programming Interfaces): PHP se često koristi za izradu RESTful API-ja koji služe podacima za mobilne aplikacije ili front-end okvire (poput Reacta, Vue.js-a ili Angulara).
- Web servisi i društvene mreže: Facebook je započeo kao PHP aplikacija i iako je evoluirao s vlastitim alatom (HHVM), korijeni su mu u PHP-u.
Razumijevanje PHP sintakse
Sintaksa PHP-a je jednostavna i intuitivna. Svaki PHP kod mora biti unutar posebnih tagova kako bi ga web poslužitelj prepoznao i obradio.
Osnovna struktura
PHP kod uvijek počinje s <?php i završava s ?>. Sve što se nalazi unutar ovih tagova bit će interpretirano kao PHP kod. Ako PHP datoteka sadrži samo PHP kod i nema HTML-a iza zadnjeg PHP taga, preporučuje se izostaviti završni ?> tag kako bi se izbjegli problemi s razmacima ili praznim linijama koje bi mogle biti poslane u preglednik i uzrokovati probleme s HTTP headerima.
<?php
// Ovdje ide vaš PHP kod
echo "Zdravo, svijete!"; // Svaka izjava završava točkom-zarezom
?>
Komentari
Komentari su neizvršni dijelovi koda koji služe za objašnjenje i dokumentiranje. PHP podržava jednolinijske i višelinijske komentare.
- Jednolinijski komentari:
<?php // Ovo je jednolinijski komentar # I ovo je također jednolinijski komentar ?> - Višelinijski komentari:
<?php /* * Ovo je višelinijski komentar. * Može se prostirati na više redaka. */ ?>
Varijable
Varijable u PHP-u služe za pohranu podataka. Sve varijable počinju znakom $ (dolara), nakon čega slijedi ime varijable. PHP je slabo tipiziran jezik, što znači da ne morate unaprijed deklarirati tip varijable; PHP automatski određuje tip na temelju dodijeljene vrijednosti.
<?php
$ime = "Ana"; // String
$dob = 30; // Integer
$visina = 1.75; // Float
$jeStudent = true; // Boolean
echo $ime;
echo $dob;
?>
Imena varijabli su osjetljiva na veličinu slova (case-sensitive). $ime i $Ime su dvije različite varijable.
Tipovi podataka
PHP podržava osam osnovnih tipova podataka:
- String: Niz znakova (npr.
"Hello World"). - Integer: Cijeli brojevi (npr.
10,-5). - Float (Double): Brojevi s decimalnom točkom (npr.
3.14,0.005). - Boolean: Logičke vrijednosti
trueilifalse. - Array: Kolekcija elemenata.
- Object: Instanca klase.
- NULL: Varijabla koja nema vrijednost.
- Resource: Specijalni tip za vanjske resurse (npr. datoteke, baze podataka).
Operatori
Operatori se koriste za obavljanje operacija na varijablama i vrijednostima.
- Aritmetički operatori:
+,-,*,/,%(modulo),**(potenciranje).$x = 10; $y = 3; echo $x + $y; // 13 echo $x % $y; // 1 - Operatori dodjeljivanja:
=,+=,-=,*=,/=,%=.$broj = 5; $broj += 3; // $broj je sada 8 (isto kao $broj = $broj + 3;) - Operatori usporedbe:
==(jednako po vrijednosti),===(identično po vrijednosti i tipu),!=(različito po vrijednosti),!==(različito po vrijednosti ili tipu),<,>,<=,>=.$a = 5; $b = "5"; var_dump($a == $b); // true (vrijednosti su jednake) var_dump($a === $b); // false (tipovi su različiti) - Logički operatori:
and(&&),or(||),xor,!(negacija).$uvjet1 = true; $uvjet2 = false; var_dump($uvjet1 && $uvjet2); // false var_dump($uvjet1 || $uvjet2); // true - Operator spajanja stringova:
.(točka).$pozdrav = "Zdravo"; $ime = "Mirko"; echo $pozdrav . " " . $ime . "!"; // Zdravo Mirko!
Kontrolne strukture
Kontrolne strukture omogućuju vam da usmjerite tijek izvršavanja koda na temelju određenih uvjeta.
If/Elseif/Else
<?php
$ocjena = 75;
if ($ocjena >= 90) {
echo "Izvrsno!";
} elseif ($ocjena >= 70) {
echo "Vrlo dobro.";
} else {
echo "Potrebno je više truda.";
}
?>
Switch
<?php
$boja = "plava";
switch ($boja) {
case "crvena":
echo "Odabrali ste crvenu.";
break;
case "plava":
echo "Odabrali ste plavu.";
break;
default:
echo "Boja nije prepoznata.";
}
?>
Petlje (Loops)
Petlje se koriste za ponavljanje bloka koda.
- For petlja:
<?php for ($i = 0; $i < 5; $i++) { echo "Broj je: " . $i . "<br>"; } ?> - While petlja:
<?php $i = 0; while ($i < 5) { echo "Broj je: " . $i . "<br>"; $i++; } ?> - Do-While petlja: (Izvršava se barem jednom)
<?php $i = 0; do { echo "Broj je: " . $i . "<br>"; $i++; } while ($i < 5); ?> - Foreach petlja: (Idealna za nizove)
<?php $voce = ["jabuka", "banana", "naranča"]; foreach ($voce as $item) { echo "Volim " . $item . "<br>"; } $osoba = ["ime" => "Ivan", "prezime" => "Horvat"]; foreach ($osoba as $key => $value) { echo $key . ": " . $value . "<br>"; } ?>
Funkcije
Funkcije su blokovi koda koji se mogu više puta koristiti. Pomažu u organizaciji koda i sprječavaju ponavljanje.
<?php
function pozdraviKorisnika($ime) {
return "Zdravo, " . $ime . "!";
}
echo pozdraviKorisnika("Marko"); // Zdravo, Marko!
// Funkcija s defaultnom vrijednosti
function zbroj($a, $b = 0) {
return $a + $b;
}
echo zbroj(5); // 5
echo zbroj(5, 3); // 8
?>
PHP ima i tisuće ugrađenih funkcija za obradu stringova, nizova, datoteka, baza podataka itd. Neki primjeri su strlen(), count(), array_push(), htmlspecialchars().
Nizovi (Arrays)
Nizovi su posebne varijable koje mogu pohraniti više vrijednosti u jednoj varijabli. PHP nizovi su vrlo fleksibilni.
- Indeksirani nizovi: Elementima se pristupa putem numeričkih indeksa (počevši od 0).
<?php $automobili = ["Volvo", "BMW", "Toyota"]; echo $automobili[0]; // Volvo ?> - Asocijativni nizovi: Elementima se pristupa putem imenovanih ključeva.
<?php $dob = [ "Petar" => 35, "Ana" => 28, "Ivan" => 42 ]; echo $dob["Petar"]; // 35 ?> - Višedimenzionalni nizovi: Nizovi koji sadrže druge nizove.
Objektno orijentirano programiranje (OOP)
PHP od verzije 5.0 snažno podržava OOP paradigmu, koja omogućuje stvaranje klasa i objekata. OOP pomaže u pisanju modularnog, skalabilnog i lako održivog koda. Koncepti poput klasa, objekata, nasljeđivanja, enkapsulacije i polimorfizma ključni su dijelovi modernog PHP razvoja.
<?php
class Auto {
public $marka;
public $model;
public function __construct($marka, $model) {
$this->marka = $marka;
$this->model = $model;
}
public function prikaziDetalje() {
return "Marka: " . $this->marka . ", Model: " . $this->model;
}
}
$mojAuto = new Auto("BMW", "X5");
echo $mojAuto->prikaziDetalje(); // Marka: BMW, Model: X5
?>
PHP Frameworks i alati
Za efikasniji razvoj, PHP zajednica je razvila mnoge frameworke i alate:
- Laravel: Najpopularniji PHP framework, poznat po svojoj elegantnoj sintaksi, bogatoj funkcionalnosti i velikoj zajednici.
- Symfony: Snažan i fleksibilan framework koji se koristi za razvoj kompleksnih poslovnih aplikacija.
- CodeIgniter: Lagan i brz framework s malim otiskom.
- Zend Framework (Laminas): Robustan framework orijentiran na enterprise aplikacije.
- WordPress: Iako je CMS, ima vlastiti ekosustav i često se spominje kao platforma za razvoj s PHP-om.
- Composer: Alat za upravljanje ovisnostima u PHP-u. Neophodan za moderni PHP razvoj.
Budućnost PHP-a
Unatoč pojavi novih jezika i tehnologija, PHP nastavlja rasti i razvijati se. Aktivno se radi na novim verzijama koje donose daljnja poboljšanja performansi, sigurnosti i modernizaciju sintakse. PHP je i dalje izuzetno relevantan jezik za web razvoj i ne pokazuje znakove usporavanja.
Zaključak
PHP je svestran, moćan i široko rasprostranjen programski jezik koji je oblikovao internet kakvog danas poznajemo. Njegova jednostavnost, velika podrška zajednice i stalna evolucija čine ga izvrsnim izborom za sve, od početnika do iskusnih profesionalaca. Bilo da gradite blog, e-commerce trgovinu ili kompleksan API, PHP nudi alate i fleksibilnost potrebnu za uspjeh. Učenje PHP-a otvara vrata bogatom ekosustavu web razvoja i neizmjernim mogućnostima.
