Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "Odincludowanie" pliku?
daris
post
Post #1





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


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?

Ten post edytował daris 24.02.2008, 11:39:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
LonelyKnight
post
Post #2





Grupa: Zarejestrowani
Postów: 240
Pomógł: 13
Dołączył: 1.06.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
daris
post
Post #3





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


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ę)
Go to the top of the page
+Quote Post
Athlan
post
Post #4





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
daris
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował daris 24.02.2008, 13:20:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:03