Don’t Repeat Yourself (DRY) kako je i opisano na samoj Wikipediji predstavlja načelo razvoja softvera čiji je krajnji cilj smanjenje ponavljanja informacija, odnosno u ovom slučaju PHP koda. Kao i u svemu što radimo uvijek nam je želja posao pojednostaviti što je više moguće, pa samim tim i olakšati.
Sam DRY pristup ću vam pokušati pojasniti na primjeru spajanja na MySQL server, recimo niže je klasičan primjer koji svi prvo nauče.
$con = mysql_connect('localhost', 'korisnickoime', 'lozinka');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("nazivbaze", $con);
Ono što bi DRY pristup zahtijevao, a i primjer iznad učinio čitljivijim je izdvajanje varijabli u kojima će biti svi potrebni podaci.
$db_host = 'localhost';
$db_user = 'korisnickoime';
$db_pass = 'lozinka';
$db_baza = 'nazivbaze';
$mysql = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_baza);
Kako se host, naziv baze i korisnički podaci ne mijenjaju kroz aplikaciju možete definirati konstante.
define('DB_HOST', 'localhost');
define('DB_USER', 'korisnickoime');
define('DB_PASS', 'lozinka');
define('DB_BAZA', 'nazivbaze');
$mysql = mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_BAZA);
Recimo da često nakon testiranja sa jednog servera prelazite na drugi, kako ne biste svaki puta morali mijenjati host, naziv baze i korisničke podatke. Jednostavno korištenjem if petlje definirate dio za produkciju, dio za testno okruženje i promjenom vrijednosti konstante LIVE_SERVER upravljajte hostom, nazivom baze i korisničkim podacima.
define('LIVE_SERVER', true); // true za produkciju, false za testni server
if(LIVE_SERVER) {
// definirajte host, naziv baze i korisničke podatke
// u slučaju kada radi na produkciji (live okruženje)
} else {
// definirajte host, naziv baze i korisničke podatke
// u slučaju kada radite u testnom okruženju
}
Ili koristite predefinirane PHP varijable.
if ($_SERVER['HTTP_HOST'] == 'www.nazivdomene.com') {
// definirajte host, naziv baze i korisničke podatke
// u slučaju kada radi na produkciji (live okruženje)
} else {
// definirajte host, naziv baze i korisničke podatke
// u slučaju kada radite u testnom okruženju
}
One reply on “DRY, konstante i trikovi u slučaju PHP-a”
što reći nego za svaku pohvalu edukacijskog materijala ;-)