Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Poprawne pisanie
emil_seba
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 24.05.2010

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


Witam, mam taki problem. Chce napisać stronę www obiektowo i tak:
+ Mam klasę A w pliku class.A.php:
  1. class A
  2. {
  3. protected $imie;
  4. protected $nazwisko;
  5. protected $znajomi;
  6. public function showDaneUzyt()
  7. {
  8. echo 'imie: '.$this->Imie.' nazwisko: '.$this->nazwisko.'<br />';
  9. }
  10. public function showZnajomych()
  11. {
  12. foreach($this->znajomi as $ob)
  13. {
  14. echo $ob;
  15. }
  16. }
  17.  
  18. }


plik index.html:
  1. // jakies bajery oraz
  2. echo '<a href = "Widok.php?showDane=1">Pokaz Dane Uzytkownika</a><br />';
  3. echo '<a href = "Widok.php?showZnj=1">Pokaz Znajomych Uzytkownika</a><br />';


oraz plik Widok.php
  1. require_once('class.A.php');
  2.  
  3. $obiekt = new A;
  4.  
  5. if(isset($_GET['showDane']))
  6. $obiekt->showDaneUzyt()
  7. if(isset($_GET['showZnj']))
  8. $obiekt->showZnajomych()
  9.  


Moje pytanie brzmi: jak poprawnie powinno się pisać strony obiektowo, czy tak jak wyżej (lecz jeżeli klasa A miała by np 100 funkcji i chcial bym je wywoływać
po kliknięciu gdzieś na stronie i sprawdzać która mam wykonać za pomocą tablicy GET a która nie, to ? No właśnie, bym musiał sprawdzać ciągle co jest w adresie) Idzie jakoś inaczej to zrobić? Lepszym rozwiązaniem było by skorzystanie ze zmiennych sesyjnych ? A może lepiej by bylo podzielic plik Widok na kilka mniejszych np WidokZnajomych.html, WidokX.html, WidokY.html ? I ostatnie pytanie, jeżeli wchodzę na strone Widok.php to jest tworzony obiekt, po odswiezeniu strony ten obiekt jest tworzony od nowa (o ile dobrze rozumiem ), wiec jezeli podzielił bym strone Widok.php na kilka mniejszych i w pierwszej zapisal
pierwsza.html
  1. $obiekt = new A;
  2. $obiekt->podaj();//przykladowa funkcja
  3. $obiekt->dodaj();//przyk..
  4. echo '<a href = "droga.html">Zobacz swojego kumpla</a><br />';


droga.html
  1. $obiekt = new A;
  2. $obiekt ->zobaczKumpla();


to moja strona zlozona z kilku podstron dzialala by z takim samym narzutem pamieciowym co wszystko razem np :
strona.html
  1. $obiekt = new A;
  2. $obiekt->podaj();//przykladowa funkcja
  3. $obiekt->dodaj();//przyk..
  4. echo '<a href = "strona.html?zobaczKumpla=1">Zobacz swojego kumpla</a><br />';
  5. if(isset($_GET['zobaczKumpla']))
  6. $obiekt ->zobaczKumpla();

Który sposób jest lepszy? Ten kod jest oczywiście przykładowy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Grand93
post
Post #2





Grupa: Zarejestrowani
Postów: 58
Pomógł: 1
Dołączył: 2.08.2010
Skąd: Dębica

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


Sorki ze nie będę odpowiadał po kolei - i nie do końca na temat (IMG:style_emoticons/default/winksmiley.jpg)
Ja bym to zrobił w ten sposób ( i chyba każdy inny programista php szanujacy swój czas i prędkość wykonywania skryptow tez (IMG:style_emoticons/default/winksmiley.jpg) ), ze :
  1. $objA = new A;
  2. /*
  3. tutaj metody do łączenia z baza etc.
  4. */
  5. $objA -> $_GET['akcja'] . 'Action'();

w klasie A dodaj funkcje __call która będzie wyrzucać błąd 404 ( brak danej akcji )

tak w nawiasie - jest taka zasada która mówi ze ma istnieć tylko jeden powód aby edytowac / pisać od nowa klasę - takim podejściem mijasz się z celem OOP.
Twój kod będzie nieskalowny i praktycznie niemodyfikowalny / nierozszerzalny.

Co do ilości plików - nie ma to aż takiego znaczenia gdy chodzi o jakość i przejrzystosc kodu - 10 plików, z których każdy służy do czegoś innego łatwiej jest edytowac niż jeden pogmatwany (IMG:style_emoticons/default/winksmiley.jpg)

pozdrawiam Mateusz

ps - jeżeli się mylę przepraszam i poprawcie mnie (IMG:style_emoticons/default/winksmiley.jpg)
ps2 - @Emil_seba mam nadzieje ze zrozumiales. Jeżeli nie to pytaj.

Btw - dziwilo mnie ze ten post jest tyle bez odpowiedzi - bynajmniej podziwiam większa cześć forumowiczów (IMG:style_emoticons/default/winksmiley.jpg)
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: 3.10.2025 - 17:04