Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z odwołaniem się do funkcji klasy
#1
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

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ę
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Toungue Funkcja w funkcji Radian 5 3,448 24-08-2012, 17:38
Ostatni post: Radian
  Klasy, obikety i baza Marys 5 3,990 02-04-2011, 22:30
Ostatni post: KowR
  [PHP] Argument funkcji a wydajność? lukasamd 0 1,294 17-06-2010, 01:07
Ostatni post: lukasamd
  MVC - jak zadania rozłożyć na klasy i metody bor1904 0 1,225 31-03-2010, 07:12
Ostatni post: bor1904

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl