DRY, konstante i trikovi u slučaju PHP-a

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
}

1 Comment

  1. IvanC napisao:

    što reći nego za svaku pohvalu edukacijskog materijala ;-)

Komentiraj