Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa]Modules
Forum PHP.pl > Inne > Oceny
Joachim Peters
Chciałbym się Wam spytać, jak podoba się wam moja klasa do obsługi modułów, co w niej zmienić itd.
Zapewne nie ma się czym chwalić, ale głównie chodzi mi o sugestie, propozycję i opinię!

  1. <?php
  2.  
  3. class Modules {
  4.  private $moduleType;
  5.  private $defaultUserModule = 'news';
  6. private $defaultAdminModule = 'stats';
  7.  
  8. /**
  9.  * Sprawdza czy moduł istnieje
  10.  */
  11. private function checkModuleExists($moduleName) {
  12. if(file_exists('./modules/'.$this->moduleType.$moduleName.'.php')) {
  13. return true;
  14. }
  15.  
  16. return false;
  17. }
  18.  
  19. /**
  20.  * Uruchamia poszczególne moduły. 
  21.  */
  22. public function run($moduleName = null, $admin = false) {
  23.  $moduleName = strtolower($moduleName);
  24.  
  25. if(strlen($moduleName) < 4 || strlen($moduleName) > 15) {
  26. throw new Exception('Nazwa modułu jest za krótka lub za długa.');
  27. }
  28.  
  29. $this->moduleType = ($admin) ? 'admin/' : 'user/';
  30.  
  31. if($moduleName) {
  32. if($this->checkModuleExists($moduleName)) {
  33. include_once('./modules/'.$this->moduleType.basename($moduleName.'.php'));
  34.  
  35. return;
  36. }
  37. } 
  38.  
  39. if($this->checkModuleExists(($admin) ? $this->defaultAdminModule : $this->defaultUserModule)) {
  40. include_once('./modules/'.$this->moduleType.basename(($admin) ? $this->defaultAdminModule : $this->defaultUserModule.'.php'));
  41. } else {
  42. throw new Exception('Nie można załadować żadnego modułu');
  43. }
  44. }
  45. }
  46.  
  47. ?>


Główne założenie klasy to bezpieczne wczytywanie plików (modułów). Nazwa modułu jest pobierana z adresu.
Chętnie przyjmę krytykę, lecz bez przesady bo to dopiero moje początki smile.gif

Pozdrawiam
menic
No wybacz, ale nie wiele tu oceniac. Raptem pare instrukcji... I po co ta "blokada" na dlugosc nazwy?
Joachim Peters
Tylko ten dział pasuje aby spytać się Was o sugestie, wiem, że nie ma tu co oceniać ;P
bełdzio
w checkModuleExists zamiast warunku możesz dać po prostu return file_exists
Speedy
Cytat(bełdzio @ 25.08.2007, 10:15:07 ) *
w checkModuleExists zamiast warunku możesz dać po prostu return file_exists


Ja bym w ogóle wywalił tę metodę, bo nie robi ona niczego poza wywołaniem funkcji file_exsits(). Jest to dodawanie niepotrzebnego kodu.
Joachim Peters
Zrobiłem to dla przejrzystości, żebym nie musiał ciągle ścieżki pisać smile.gif
Moli
No ale mogłeś dać tylko
  1. <?php
  2. return file_exists('./modules/'.$this->moduleType.$moduleName.'.php') ;
  3. ?>
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.