Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak traktowac obiekty?
Beynar
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

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


Ostatnio mnie nurtuje pytanie dot. OOP... mianowicie mam nastepujace pytania:

1. Czy wlasciwym jest pisac np. klase user uzywac jej w ten sposob by do kazdej metody podawac jakies argumenty ktore w rzeczywistosci beda odnosic sie do roznych userow? Czy tworzyc instancje klasy danego user i w tym momencie wszystkie metody obiektu nie przyjmuja argumentow dotyczących tego na jakim userze ma wykonywac operacje, poniewaz operuje na obecnym stanie obiektu - danym userze.

2. Jesli przyjac powyzsza idee, to jak rozwiazac problem gdy dany obiekt wyjsciowo ma reprezentowac jakis string. Generowac napis ktory ma zostac wyswietlony. Takich napisow ma byc 30. Tworzyc 30 obiektow tylko po to zeby je wydrukowac? Chyba troche malo optymlanie... z drugiej strony jesli skorzystac z jednego obiektu do budowania tych 30 napisow to moj obiekt zamini sie w mala fabryke i juz nie bedzie tak swietnie implementowal idei obiektowosci (tak mysle, moze blednie).

Ten post edytował Beynar 19.05.2008, 22:00:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Beynar
post
Post #2





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

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


Tak macie racje Panowie... troche się zapędziłem z tymi statycznymi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dziedziczenie jest bardziej do tego przeznaczone. Macie racje.

Nie bede juz tego rozstrząsał, zwróce natomiast uwage ku mojemu realnemu problemowi
Napisałem zarys klasy URL (bez ciał funkcji, jakby interfejs) dość komenatarzy więc nie zrażajcie się długością posta

  1. <?php
  2.  class URL{
  3.  
  4.  /**
  5. * @var array zawiera takie dane jak sesid, jezyk, region itp.
  6. */
  7.  private static $routeHelpers=null;
  8.  
  9.  /**
  10. * @var array kontroler/akcja
  11. */
  12.  private $routeAddress=null;
  13.  
  14.  /**
  15. * @var array parametry
  16. */
  17.  private $routeParms=null;
  18.  
  19.  /**
  20. * wywoluje stringToArray lub arrayToString, jesli wlaczone
  21. * jest szyfrowanie, to przepusci dane przez statyczna metode
  22. * decrypt i ustawi wlasciwosci routeHelpers, routeAddress oraz 
  23. * routeParms
  24. *
  25. * @param string $routeInfo
  26. */
  27.  public function __construct($routeInfo){}
  28.  
  29.  /**
  30. * Metoda dostepowa zwraca wlasciwosc routeHelpers
  31. */
  32.  public function getHelpers(){}
  33.  
  34.  /**
  35. * Metoda dostepowa zwraca wlasciwosc routeAddress
  36. */
  37.  public function getAddress(){}
  38.  
  39.  /**
  40. * Metoda dostepowa zwraca wlasciwosc routeParms
  41. */
  42.  public function getParms(){}
  43.  
  44.  /**
  45. * Jesli wlaczone szyfrowanie to najpierw wywoluje stringToArray
  46. * nastepnie encrypt. Odpowiednio dopelnia link elementami globanymi
  47. * (routeHelpers) na koncu wywoluje arrayToString, dopelnia routeInfo
  48. * do kompletnego URI i je zwraca 
  49. *
  50. * @param string $routePath
  51. */
  52.  public static function build($routePath){}
  53.  
  54.  /**
  55. * odszyfrowuje wartosci tablicy
  56. * @param array $array
  57. */
  58.  private static function decrypt($array){}
  59.  
  60.  /**
  61. * szyfruje wartosci tablicy
  62. * @param array $array
  63. */
  64.  private static function encrypt($array){}
  65.  
  66.  /**
  67. * Rozbija string w tablice po odpowiednim separatorze
  68. *
  69. * @param string $string
  70. */
  71.  private static function stringToArray($string=false){}
  72.  
  73.  /**
  74. * Sklada tablice do stringu po danym separatorze
  75. *
  76. * @param array $array
  77. */
  78.  private static function arrayToString($array=false){}
  79.  }
  80.  
  81.  //-----------------------------------------------------------------
  82.  
  83.  // Zastosowanie w routerze
  84.  $URL = new URL($_SERVER["PATH_INFO"]);
  85.  // gotowa trasa routowania, wystarczy podac do routera
  86.  $URL -> getAddress();
  87.  
  88.  // Zastosowanie w widoku
  89.  URL::build("home/index/87");
  90.  // gotowy link
  91.  ?>


Co mnie boli?
a.. to, że teraz ma prawie same statyczne metody w tej klasie i obiekt traci taką ścisłą obiektowość. A musi tak być, jeśli chce korzystać w statyczny sposób do budowania linków na stronie (z kolei build korzysta z innych statycznych...).

Czekam na wasze pomysły

pozdrawiam, Kuba

Macie moze jakies sugestie do powyzszego kodu.

pozdrawiam

Ten post edytował Beynar 20.05.2008, 16:39:13
Go to the top of the page
+Quote Post

Posty w temacie


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: 30.12.2025 - 14:07