Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SPL] Czy da sie to osiagnac mniejsza iloscia kodu?, czyli zamiana proceduralnego na objektowe...
jjkk
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 18.05.2006

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


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

Ten post edytował jjkk 20.07.2007, 20:11:19
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 20.08.2025 - 21:50