15-05-2010, 20:21
Witam
Potrzebuję Waszej pomocy w sprawie odwoływania się do funkcji....
mam klasę MVC, która ładuje się zawsze na początku i ona odpowiada za załadowanie klasy danego kontrolera.
kontroler ma w konstruktorze
klasa MVC_Load odpowiada za tworzenie instancji danej klasy modelu lub danej klasy biblioteki (biblioteka to u mnie tplugin np do obsługi URL itp)
W kontrolerze korzystać mogę w taki sposób:
//najpierw dodanie "referencji"
//potem konkretne zabiegi (przykładowe)
Reasumując: index.php ładuje zawsze klase MVC, która wskazuje kontroler do załadowania, on ma w konstruktorze stworzenie instancji(jak wyżej), potem w kontrolerze do modeli i bibliotek odwołuje się "przez load" czego nie mogę zrobić z poziomu metody w modelu, a tam również potrzebuję dostepu do bibliotek...
(ten cały układ jest częściowo zgapiony z TinyMVC jeżeli to pomoże)
Jak korzystać z plug-inów (bibliotek) wewnątrz modelu ???
(jak się powinienem odwoływać ?)
Jeżeli potrzeba wglądu do jakiejś części kodu to chętnie udostepnie ...
Będę bardzo wdzięczny za szybkie naprowadzenie, bo dzis mam wolne ...
Pozdrawiam i z góry dziekuję
Potrzebuję Waszej pomocy w sprawie odwoływania się do funkcji....
mam klasę MVC, która ładuje się zawsze na początku i ona odpowiada za załadowanie klasy danego kontrolera.
kontroler ma w konstruktorze
Kod PHP:
{
mvc::instance($this);
$this->load = new MVC_Load;
}
klasa MVC_Load odpowiada za tworzenie instancji danej klasy modelu lub danej klasy biblioteki (biblioteka to u mnie tplugin np do obsługi URL itp)
Kod PHP:
public function library($class_name,$alias=null,$filename=null)
{
/* Gdy nie użyto aliasu */
if(!isset($alias))
$alias = $class_name;
if(empty($alias))
trigger_error("Nazwa biblioteki nie może być pusta",E_USER_ERROR);
if(!preg_match('!^[a-zA-Z][a-zA-Z_]+$!',$alias))
trigger_error("Nazwa biblioteki '{$alias}' ma nieprawidłową składnię !!!",E_USER_ERROR);
if(method_exists($this,$alias))
trigger_error("Nazwa biblioteki '{$alias}' jest zarezerwowana !!!",E_USER_ERROR);
/* /* Czy biblioteka jest załadowana ? */
if(isset($this->$alias))
return true;
/* Gdy klasa nie istnieje */
if(!class_exists($class_name))
{
if(!isset($filename))
$filename = 'library.' . $class_name . '.php';
/* Sprawdz w myapps/myfiles/sysfiles plugins dirs */
$filepath = MYAPPDIR . 'plugins' . DS . $filename;
if(!file_exists($filepath))
$filepath = BASEDIR . 'myfiles' . DS . 'plugins' . DS . $filename;
if(!file_exists($filepath))
$filepath = BASEDIR . 'sysfiles' . DS . 'plugins' . DS . $filename;
if(!file_exists($filepath))
trigger_error("Nieznana biblioteka '{$class_name}'",E_USER_ERROR);
require_once($filepath);
if(!class_exists($class_name))
trigger_error("Nieznana nazwa klasy '{$class_name}'",E_USER_ERROR);
}
/* pobranie instancji mvc */
$mvc = mvc::instance();
$mvc->$alias = new $class_name;
return true;
}
W kontrolerze korzystać mogę w taki sposób:
//najpierw dodanie "referencji"
Kod PHP:
$this->load->library('Url','url');
$this->load->model('Sqlite_Model','sql');
//potem konkretne zabiegi (przykładowe)
Kod PHP:
$val = $this->url->get(2);
$result = $this->sql->query("SELECT * FROM services WHERE gr='av'");
Reasumując: index.php ładuje zawsze klase MVC, która wskazuje kontroler do załadowania, on ma w konstruktorze stworzenie instancji(jak wyżej), potem w kontrolerze do modeli i bibliotek odwołuje się "przez load" czego nie mogę zrobić z poziomu metody w modelu, a tam również potrzebuję dostepu do bibliotek...
(ten cały układ jest częściowo zgapiony z TinyMVC jeżeli to pomoże)
Jak korzystać z plug-inów (bibliotek) wewnątrz modelu ???
(jak się powinienem odwoływać ?)
Jeżeli potrzeba wglądu do jakiejś części kodu to chętnie udostepnie ...
Będę bardzo wdzięczny za szybkie naprowadzenie, bo dzis mam wolne ...
Pozdrawiam i z góry dziekuję