Witam, mam mały problem ;-)

W Moim cms napisalem sobie system wtyczek.. W pewnym katalogu wrzucam odpowiedni pliczek a on dodaje ladnie rozne funkcje do systemu.

działa to tak..

kazdy plugin ma taka strukture: ( przykladowo faq.npl.php )
  1. <?
  2. class faq {
  3.  
  4.  
  5.  
  6.     function faq() {
  7.     //to, co nastepuje przy zaladowaniu wtyczki
  8.     }
  9.     
  10.     //jakies tam funkcje
  11.  
  12.     function admin_faq() {
  13.     //to, co dodaje funkcje do panelu admina..
  14.     }
  15.     
  16. }
  17. ?>


Taki plugin jest ladowany prez nastepujacy kod:
  1. <?
  2. $plugin = new Plugins;
  3.  
  4. class Plugins {
  5.  
  6.     var $p = array();
  7.  
  8.     function Plugins() {
  9.   foreach(glob('FILES/php/PLUGS/*.npl.php') as $plik) {
  10.       include($plik);
  11.       $plik2=explode('/', $plik);
  12.       $plik3=explode('.', $plik2[3]);
  13.       $this->p[$plik3[0]] = new $plik3[0];
  14.   }
  15.     } 
  16. }
  17. ?>

Wiec zeby odwolac sie do jakiejstam funkcji z pluginu np. show_faq() muszę zrobić <span style="font-weight: bold;">$plugin->p['faq']->show_faq();</span>

w strukturze wtyczki zwroccie uwage na funkcje admin_faq - odpowiedzialna jest za dodanie funkcjonalnosci do panelu admina.. jest ok, w panelu wywoluję ją poprzez ten kod:

  1. <?php  $funkcja='admin_'.$site[1];
  2.       if (function_exists($plugin->p[$site[1]]->$funkcja())) {
  3.     $plugin->p[$site[1]]->$funkcja();
  4.       } else {
  5.     $body=@errors('404. Brak takiej strony!', '&laquo; Wróć', 'java script:history.go(-1)');
  6.       }
  7. ?>

Gdzie <span style="font-weight: bold;">$site[1]</span> to zmienna z adresu, np. faq ;]

<span style="font-weight: bold;">SEDNO:</span>

i jest ok, acp chce zaladowac funkcję <span style="font-weight: bold;">admin_faq()</span>, ale..

Cytat
Fatal error: Call to undefined method faq::admin_faq() in /home/Wicko/www/nes/php/admin/admin.php on line 15

On chce sie odwolac nie do funkcji, tylko do metody w klasie. Jak to zmienic?

Z góry dziękuję, jeżeli nie rozumiecie to zapytajcie, nie bójcie się winksmiley.jpg