Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] programowanie obiektowe, która opcja jest prawidłowa, Używać global czy w każdej funkcji tworzyć instancję klasy?
grzemach
post 18.08.2009, 16:31:22
Post #1





Grupa: Zarejestrowani
Postów: 121
Pomógł: 4
Dołączył: 9.06.2007
Skąd: Kielce

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


Witam,
Ostatnio nasunęło mi się pytanie odnośnie programowania obiektowego w PHP (a i chyba ogólnie).

Załóżmy że mamy plik index.php

  1. $pages = new Pages();
  2. $pages->funkcja1();
  3. $pages->funckja2();


Dodatkowo jest klasa z formularzami:
  1. class Forms{
  2. public function submit(){}
  3. public function inputText(){}
  4. }


Teraz w funkcji1 chcemy stworzyć jeden formularz i w funkcji2 chcemy stworzyć jeden formularz.
czyli
  1. class Pages{
  2. public function1(){
  3. $form = new Forms();
  4. // lecimy dalej z formularzem i treścią
  5. }
  6. public function2(){
  7. $form = new Forms();
  8. // dalej treści
  9. }
  10. }



Można zrobić też w drugi sposób tzn index.php by wyglądał
  1. $pages = new Pages();
  2. $form = new Forms();
  3. $pages->funkcja1();
  4. $pages->funckja2();


a Pages:
  1. class Pages{
  2. public function1(){
  3. global $form;
  4. // lecimy dalej z formularzem i treścią
  5. }
  6. public function2(){
  7. global $form;
  8. // dalej treści
  9. }
  10. }


Przy czym z użytkowego punktu widzenia nie ma to żadnego znaczenia. W tej klasie nie ma żadnej zmiennej statycznej, którą można by wymieniać między poszczególnymi funkcjami. Chciałem się zapytać która z tych opcji jest właściwa i która należało by używać.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post 18.08.2009, 21:01:49
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Cytat(fifi209 @ 18.08.2009, 19:34:41 ) *
A jak w drugiej funkcji chcesz użyć instancji, na której przed chwilą wykonywałeś jakieś operacje?
A no właśnie zależy od zamierzeń użycia.
1. Jeśli chce w każdej metodzie tworzyć nowy form i na nim operować.
2. Jeśli chce operować na jednym formie to wtedy przekazanie obiektu.
  1. //1.
  2. class Pages{
  3. public function1(){
  4. $form = new Forms();
  5. // lecimy dalej z formularzem i treścią
  6. }
  7. public function2(){
  8. $form = new Forms();
  9. // dalej treści
  10. }
  11. }
  12.  
  13. //2.
  14. class Pages{
  15. public function __construct(Forms $form){
  16. $this->form = $form;
  17. }
  18. public function1(){
  19. $this->form ='function1';
  20. // pierwsza oepracja na formularzu
  21. }
  22. public function2(){
  23. // druga operacja na tym samym formularzu
  24. if ($this->form == 'function1'){
  25. return 'byl edytowany w function1';
  26. }
  27. }
  28. }



--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 21:09