Eo npr pravis svoju biblioteku u app/libs
Zove se My_Login.php
U login klasi hoces da proveravas dali je korisnik registrovan ili nije. E sada, zasto bi ti pisao novu klasu za konekciju sa bazom kada vec mozes koristiti CI Database....
I zasto bi ti morao da Extendujes DB (a kod CI nemozes)....
Zato se goristi getInstance => singleton pattern poznat u php-u...
To se u vecini slucajeva poziva u konstruktoru:
class My_Login {
public function __constructor() {
// initialize ci core
$CI =& getInstance(); // preuzima ih po referenci
// u obicnom kontroleru koristis $this i instanciras libs koji ti treba
// $this->load->library('database') <--- samo za kontrolere
// U ovo slucaju koristis direktan pristup u ci core
// Referencom preuzimas sve umesto this ide referenca $CI
$CI->load->library('database');
// Npr view ili dispach bi u kontroler pozvao
// $this->load->view('blabla', $this->data);
$CI->load->view('blabla', $this->data);
}
}
Da ne balavim vise zbunicu te... Matori to koristis samo ako hoces da pozoves postojecu CI biblioteku u svoju neku kasu (ne u kontroler == klasu)...
I to je to...
Citat:Zapravo, cemu sluzi taj super objekat
Super objekat hmm. Aj malo slika iz realnog zivota :
Zamisli Lokomotivu koja vuce 20 vagona. Bez lokomotive ti vagoni su nepokretni i sami rade odvojeno onaj povez koji spaja vagon 1 i vagon 2 to je npr u php Extends. E sada da bi to sve radilo zajedno kao jedan i da bi se to pokretalo potreban je super objekat koji ce da povuce sve te vagone a to je lokomotiva u ovom slucaju BaseController koji povlaci sve core klase db, loging, string, error itd. sve su to vagoni...
Primer iz zivota:
class BaseController {
public function __constructor() {
// Assign all the class objects that were instantiated by the
// bootstrap file (CodeIgniter.php) to local class variables
// so that CI can run as one big super object.
foreach (is_loaded() as $var => $class)
{
$this->$var =& load_class($class);
}
/// E to ti je super objekat. Svaki kontroler nasledjuje ci kontroler a ci kontroler nasledjuje baseController.
Zato ti mozes u svakom kontroleru da pozoves svaku biblioteku sa [b]$this -> [klasa] -> [finkcija][/b]
// $this->load->view
}
}
Ako nemas iskustva u OOP onda batali samo ces sebe da zbunis i nista neces da uradis!!!
|