Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie podstrony/innej treści, Jak to wykonać zgodnie z obiektowością?
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Krótko i na temat - postanowiłem z lekka uporządkować kod swojego CMSu i uczynić go bardziej obiektowym. W związku z tym sprawdziłem jaki wpływa na prędkość ma zbudowanie obiektu i wykonanie metody kontra wykonanie metody statycznej, wyniki z lekka mnie zaskoczyły:
  1. <?php
  2. class test {
  3. static public function get() { return array(); }
  4. }
  5.  
  6. class test2 {
  7. public function get() { return array(); }
  8. }
  9.  
  10. $s = microtime(true);
  11. for($i=0; $i<=1000; $i++) {
  12. $x = new test;
  13. $y = $x->get();
  14. unset($x, $y);
  15. }
  16. echo "Object: ".round((microtime(true)-$s), 4)." ms<br/>";
  17.  
  18. $s = microtime(true);
  19. for($i=0; $i<=1000; $i++) {
  20. $y = test2::get();
  21. unset($y);
  22. }
  23. echo "Static: ".round((microtime(true)-$s), 4)." ms<br/>";
  24.  
  25. /*
  26.  Object: 0.0036 ms
  27.  Static: 0.0037 ms
  28. */
  29. ?>


Różnica praktycznie żadna a wg teorii OOP wykonujemy akcję na danym obiekcie więc chyba najsensowniejszym podejściem jest taka organizacja obsługi podstron:
  1. <?php
  2. class subpage {
  3. protected $id = NULL;
  4. protected $validId = false;
  5.  
  6. function __construct($id=NULL) {
  7. if($id > 0 && textOperations::isInt($id)) { //basic validation
  8. $this->validId = true;
  9. $this->id = $id;
  10. } else {
  11. $this->validId = false;
  12. }
  13. }
  14.  
  15. public static getList() { }
  16. public function get() { }
  17. public function delete() { }
  18. public function save($arrayWithParams) { }
  19. }
  20.  
  21. $page = new subpage(134);
  22. $x = $page->get();
  23. $page->delete();
  24. unset($page);
  25. ?>


Jedna z metod (akurat w tym przykładzie) jest niezależna od id podstrony bo defakto odnosi się nie do jednej a do listy podstron.
Zastanawia mnie natomiast jedna kwestia - czy obiektowo poprawnie będzie rozwiązać to tak:
  1. <?php
  2. class subpage {
  3. public static getList() { }
  4. public static function get($id) { }
  5. public static function delete($id) { }
  6. public static function save($id, $arrayWithParams) { }
  7. }
  8.  
  9. $x = subpage::get(134);
  10. subpage::delete(134);
  11. ?>


Druga metoda jest wygodniejsza w użyciu, prędkością się nie różni ale nie wiem czy jest to do końca poprawne.
Z góry dzięki za odpowiedź smile.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
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: 21.08.2025 - 16:24