
Razvoj web aplikacija zahtijeva kontinuiranu interakciju s bazama podataka. Tradicionalno, programeri koriste SQL upite za dohvaćanje, unos i izmjenu podataka, što često rezultira pisanjem velikog broja ponavljajućih linija koda. Kako bi se taj proces optimizirao, u modernom programiranju primjenjuje se Active Record obrazac. Ovaj pristup omogućuje programerima da tablice u bazi podataka tretiraju kao klase, a pojedinačne zapise kao objekte, čime se ubrzava razvoj i poboljšava čitljivost koda.
U ovom vodiču detaljno ćemo razmotriti implementaciju Active Record biblioteke u PHP-u, fokusirajući se na izradu funkcionalnog bloga. Naučit ćete kako povezati aplikaciju s bazom podataka, kako izlistati sadržaj i kako izvršiti osnovne CRUD (Create, Read, Update, Delete) operacije bez potrebe za pisanjem kompleksnih SQL naredbi.
Što je Active Record i koje su njegove prednosti?
Active Record je dizajn obrazac koji mapira tablice iz relacionih baza podataka na objekte u programskom jeziku. Prvobitno populariziran kroz Ruby on Rails framework, ovaj pristup je preuzet u mnoge druge jezike, uključujući i PHP. Glavna prednost ovog pristupa je u tome što sakriva kompleksnost SQL-a iza jednostavnih metoda objekata.
Umjesto pisanja upita poput SELECT * FROM posts WHERE id = 1, s Active Record-om jednostavno pozivate metodu Book::find(1). To ne samo da štedi vrijeme, već i smanjuje mogućnost sintaktičkih pogrešaka u SQL-u. Biblioteka podržava najpopularnije sustave za upravljanje bazama podataka, kao što su:
- MySQL: Najčešći izbor za standardne web aplikacije.
- SQLite: Lagana baza podataka koja ne zahtijeva zaseban server.
- PostgreSQL: Napredna baza podataka za kompleksnije aplikacije.
- Oracle: Robusno rješenje za velike korporativne sustave.
Postavke i konfiguracija biblioteke
Da biste započeli s radom, potrebno je preuzeti stabilnu verziju Active Record biblioteke i smjestiti je u svoje razvojno okruženje (npr. unutar htdocs foldera u XAMPP-u). Prvi korak je definicija modela. Model je klasa koja predstavlja određenu tablicu u vašoj bazi.
U primjeru izrade bloga, kreiramo klasu Book koja nasljeđuje ActiveRecord\Model. Unutar te klase definiramo parametre kako bi biblioteka znala s kojom tablicom i bazom radi. Evo kako izgleda osnovna konfiguracija:
<?php
require_once dirname(__FILE__) . '/../../ActiveRecord.php'; class Book extends ActiveRecord\Model { static $table_name = 'posts'; // Naziv tablice u bazi static $primary_key = 'id'; // Primarni ključ tablice static $connection = 'development'; // Naziv konekcije static $db = 'blog'; // Naziv baze podataka
} $connections = array( 'development' => 'mysql://root:@localhost/blog', 'production' => 'mysql://root:@localhost/blog'
); ActiveRecord\Config::initialize(function($cfg) use ($connections) { $cfg->set_model_directory('.'); $cfg->set_connections($connections);
});
?>
U ovom kodu povezali smo klasu Book s tablicom posts i postavili parametre za spajanje na lokalni MySQL server. Inicijalizacija konfiguracije omogućuje aplikaciji da prepozna lokaciju modela i vjerodajnice za pristup bazi.
Upravljanje podacima: CRUD operacije
Kada je konfiguracija završena, upravljanje podacima postaje intuitivno. Svi procesi koji bi inače zahtijevali desetke linija koda sada se mogu izvršiti u nekoliko naredbi.
1. Dohvaćanje i ispis podataka (Read)
Postoji više načina za dohvaćanje podataka. Ako želite prvi zapis, koristite metodu first(), a ako tražite specifičan ID, koristite find(). Za ispis svih članaka, metoda all() vraća niz svih objekata iz tablice.
Primjer ispisa svih naslova članaka:
$sviClanci = Book::all();
foreach ($sviClanci as $clanak) { echo $clanak->naslov . "<br/>";
}
2. Dodavanje novih zapisa (Create)
Za unos novog članka potrebno je kreirati novi objekt klase Book, dodijeliti vrijednosti atributima koji odgovaraju nazivima stupaca u bazi i pozvati metodu save().
$noviPost = new Book;
$noviPost->naslov = "Uvod u PHP";
$noviPost->tekst = "Sadržaj članka o PHP-u...";
$noviPost->sazetak = "Kratki opis članka.";
$noviPost->save();
3. Ažuriranje postojećih podataka (Update)
Izmjena podataka prati sličnu logiku kao i unos. Prvo moramo pronaći zapis koji želimo promijeniti (npr. pomoću metode last() za zadnji uneseni zapis), promijeniti vrijednost atributa i ponovno spremiti objekt.
$alterPost = Book::last();
$alterPost->naslov = "Ažurirani naslov članka";
$alterPost->save();
4. Brisanje zapisa (Delete)
Brisanje je najjednostavnija operacija. Nakon što dohvatimo objekt koji želimo ukloniti, pozivamo metodu delete().
$deletePost = Book::last();
$deletePost->delete();
Najčešće pogreške i sigurnosni savjeti
Iako Active Record biblioteka znatno olakšava rad, programeri često nailaze na određene probleme. Jedna od najčešćih grešaka je PDOException, koja se javlja kada vjerodajnice za bazu podataka nisu isprav