Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SPL] Czy da sie to osiagnac mniejsza iloscia kodu?
Forum PHP.pl > Forum > PHP > Object-oriented programming
jjkk
Krotko:

Wykorzystujac dobrodziejstwa biblioteki SPL,zamienilem to:
  1. <?php
  2. $wynik = array();
  3. $pliki = scandir(PATH_TPL);
  4.  
  5. foreach ($pliki as $n => $plik) {
  6. if (is_file(PATH_TPL.DIRECTORY_SEPARATOR.$plik) && strpos($plik, '.tpl',1)) {
  7. if(substr_compare($plik, 'admin_', 0, 6)==0)
  8. $wynik['admin'][$plik] = $plik;
  9. else
  10. $wynik['user'][$plik] = $plik;
  11. }
  12. }
  13. ?>


na to:

  1. <?php
  2. class ExtensionsFilter extends FilterIterator {
  3. protected $extension = '';
  4.  
  5. public function __construct($iterator, $extension = null) {
  6. parent::__construct($iterator);
  7. $this->extension = $extension;
  8. }
  9.  
  10. public function accept() {
  11. return strtolower(end(explode('.', $this->current()))) === $this->extension;
  12. }
  13. }
  14.  
  15. class NamesFilter extends FilterIterator {
  16. protected $name = '';
  17.  
  18. public function __construct($iterator, $name = null) {
  19. parent::__construct($iterator);
  20. $this->name = $name;
  21. }
  22.  
  23. public function accept() {
  24.  
  25. return strtolower(current(explode('_',$this->current()))) === $this->name;
  26.  
  27. }
  28.  
  29. }
  30.  
  31. $ext = new ExtensionsFilter (new directoryIterator(PATH_TPL),'tpl');
  32. $name = new NamesFilter($ext,'admin');
  33. foreach ($name as $n)
  34. $admin_name[] = $n->getFilename();
  35. foreach ($ext as $e)
  36. if(in_array($e->getFilename(),$admin_name))
  37. $wynik['admin'][$n->getFilename()] = $n->getFilename();
  38. else
  39. $wynik['user'][$n->getFilename()] = $e->getFilename();
  40. ?>


Jednak dlugosc kodu( i zapeewne czas kompilacji) nie przekonuje mnie do tej biblioteki(przynajmniej w tym wypadku)

Co sadzicie? Dalo by sie to efektywniej osiagnac, stosujac SPL?

Dzieki za odpowiedzi...
NuLL
Cos za cos - masz jeszcze glob i klase w SPL o nazwie FindFile lub RegexFileFind smile.gif
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.