Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "Odincludowanie" pliku?
Forum PHP.pl > Forum > PHP
daris
Mam kilka plików które są includowane w pętli i każdy z nich zawiera te same funkcje - jak więc zrobić aby po "przerobieniu" danego pliku wyrzucić go ze skryptu, aby przy następnym pliku nie pluło się że dana funkcja jest już zadeklarowana?

Czy jedynym wyjściem są klasy?
LonelyKnight
Jedynym wyjściem jest przemyślenie konstrukcji i zbudowanie wszystkiego w bardziej logiczny sposób, bez powtarzania tych samych funkcji w różnych miejscach.

Poza tym może przydadzą się takie funkcje jak:

http://pl2.php.net/manual/pl/function.require-once.php
http://pl2.php.net/manual/pl/function.include-once.php
daris
Ale o to chodzi że to są różne pliki tyle że mają takie same funkcje. Dokładniej to są to różne panele wyświetlane na stronie

Narazie przepisałem to pod klasy (każda klasa ma inną nazwę)
Athlan
a ) możesz użyć function_exists(), class_exists()
b ) możesz użyć bardziej przemyślanej struktury, a jeżeli nie, to chociaż nazw funkcji/klas:

  1. <?php
  2.  
  3. $sModule = 'Kategorie';
  4. $sClassName = 'PanelAdmina_' . $sModule;
  5.  
  6. $oAdmin = new $sClassName($aEwentualneParametry);
  7.  
  8. ?>
daris
Aktualnie zrobiłem to tak:
  1. <?php
  2. foreach ($panels as $cur_panel) {
  3.  
  4. $title = $cur_panel['title'];
  5. if ($cur_panel['file'] != '' && file_exists('panels/'.$cur_panel['file'].'.php')) {
  6.  
  7. include_once 'panels/'.$cur_panel['file'].'.php';
  8.  
  9. $panel_config = array();
  10. eval($cur_panel['config']);
  11.  
  12. $class = 'PANEL_'.strtoupper($cur_panel['file']);
  13.  
  14. if (class_exists($class, false)) {
  15. eval('$panel = new '.$class.';');
  16.  
  17. if (method_exists($panel, 'display'))
  18. $panel->display($panel_config);
  19. }
  20. }
  21.  
  22. $content[] = ob_get_contents();
  23. }
  24. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.