Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][OOP] kilka pytan na temat klas
hermo767
post 12.04.2011, 17:13:01
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 12.04.2011

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


witam, jestem poczatkujacy w php i mam kilka pytan

1. jak juz robie jakas klase to mam robic, zeby byla uniwersalna, czy tak zeby mi sie na niej dobrze pracowalo?
taki przyklad: mam klase galerii, wymagane jest podlaczenie do bazy danych. baza danych to osobna klasa. i teraz moge zrobic tak, ze klase galeria wywoluje podajac dodatkowo jako parametry polaczenie z baza, ale rownie dobrze i wygodniej mi jest zrobic od razu polaczenie z baza w srodku tej klasy galeria, niz sie bawic w parametry.

2 w nawiazaniu do pierwszego. mam sobie klase galeria i w konstruktorze moge sobie tak po prostu zrobic $con = new database(); i korzystac z tego? dziala to dobrze, ale czy to jest poprawne, czy jednak powinienem to przekazywac w funkcji?

3. jesli pierwsza metoda, czy wlasciwie funkcja ma taka sama nazwe jak klasa to jest konstruktorem?

4. jesli w kontrolerze mam 2 funkcje to jest warto z tego robic klase, czy nie ma takiej potrzeby?


pozdrawiam i z gory dziekuje za odpowiedzi smile.gif
Go to the top of the page
+Quote Post
Mlodycompany
post 12.04.2011, 17:28:52
Post #2





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


1. Dobrze by było, żeby klasa była uniwersalna, a zarazem dobrze się z niej korzystało. Co do połączenia z bazą to klase która otwiera połączenie wywołuj na początku kodu, a potem klasę z galerią. W przypadku gdyby doszła Ci jeszcze jakaś inna klasa to połączenie z bazą już masz.
2.Lepiej instancje klasy dać do zmiennej klasy i potem do niej się odwoływać
3.Tak i nie musi to być pierwsza w kolejności
4. Na to pytanie sam sobie odpowiedz smile.gif

Co do odp 1 i 2 to ja bym tak zrobił
Go to the top of the page
+Quote Post
hermo767
post 12.04.2011, 17:37:52
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 12.04.2011

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


dzieki za odpowiedz:)

1. tak, ale ja mam tak zrobione, ze kazda klasa to osobny plik, wiec musze dla kazdej wywolywac, dlatego pytam czy moge to sobie robic tak, ze ta klasa jest scisle zwiazana z moim calym projektem, czy mam sie nastawic na robienie klasy dostepnej dla wszystkich i tutaj jest wlasnie kwestia polaczenia z baza. bo moge sie laczyc z baza w srodku klasy, a moge zrobic ta klase tak, ze laczenie z baza podaje jako parametr przy wywolaniu calej klasy

2. nie bardzo rozumiem. w konstruktorze mam ustawienie danych i w pewnym momencie robie sobie polaczenie z baza przez $con = new database(); i potem pobieram dane przez $con->query. no i tutaj tez bym mogl to zrobic jako parametr, ale tak jest szybciej i lepiej, ale czy poprawnie? w kontruktorze takie rzeczy moga sie znajdowac?

4. wolalabym poznac opinie kogos doswiadczonego wink.gif generalnie chodzi o to czy caly projekt ma sie skladac z klas, czy tylko korzystac z nich w przypadku kiedy to ulatwia sprawe, jak np przy laczeniu z baza. no i nie wiem czy takie mieszanie tu klasy, tu procedury jest mile widziane



Ten post edytował hermo767 12.04.2011, 17:38:17
Go to the top of the page
+Quote Post
Mlodycompany
post 12.04.2011, 18:57:22
Post #4





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


1. Ja łącze się zawsze na początku skryptu. Eliminuje to kilkukrotne połączenie do bazy. Jeżeli byś z każdym wywołaniem metody z klasy łączył się z bazą no to troche by to obciążyło strone

2.Konstruktor to funkcja która jest wywoływana zawsze na początku przy wywołaniu klasy, czyli np.
  1. class test{
  2. public function __construct(){
  3. echo('konstruktor');
  4. }
  5. public function metoda(){
  6. echo('metoda');
  7. }
  8. }
  9.  
  10. $test = new test();
  11. $test->metoda();
  12. //wyświetli napis konstruktormetoda

a jakbyś z konstruktora zrobił normalną metodę to aby uzyskać taki sam efekt działania musiałbyś wywołać oby dwie metody, reasumując konstruktor to funkcja która jest automatycznie wywoływana przy wywołaniu klasy. Wydaję mi się, że dla Ciebie najlepszym rozwiązaniem będzie klasa abstrakcyjna do obsługi bazy danych. Poczytaj sobie o takich klasach

4(3). To pozostawie bez odpowiedzi
Go to the top of the page
+Quote Post
hermo767
post 12.04.2011, 19:21:40
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 12.04.2011

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


dzieki za odpowiedz.

1. hmm.. czyli lepiej nie robic laczenia sie z baza w kontruktorze? a co jesli kazda metoda wymaga polaczenia z baza?

2.
  1. class test{
  2. public function __construct(){
  3. // tutaj robie:
  4. $con = new con();
  5. $con->query($sql);
  6. echo('konstruktor');
  7. }
  8. public function metoda(){
  9. echo('metoda');
  10. //tutaj sobie uzywam tego polaczenia z baza
  11. }
  12. public function metoda2(){
  13. echo('metoda2');
  14. //a tutaj nie
  15. }
  16. }
  17.  
  18. $test = new test();
  19. $test->metoda();
  20. //wyświetli napis konstruktormetoda


i takie cos jest poprawne? ze w kontsruktorze robie sobie dolaczenie innej klasy?


poza tym po kazdym polaczeniu z baza nalezy zamknac to polaczenie, wiec takie jedno polaczenie ogolne nie zawsze jest zbyt dobrym pomyslem?

jakby ktos mogl to prosze jeszcze na tamte pytania odpowiedziec:)
Go to the top of the page
+Quote Post

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: 29.03.2024 - 09:48