Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] klasa i konstruktor, laczenie z baza
szymonstawi
post 6.04.2011, 15:53:39
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


witam

slabo sie znam na programowaniu obiektowym, ale udalo mi sie stworzyc klase, gdzie mam funcke polaczenia sie z baza i dodawania, edycji, usuwania. wyglada to mniej wiecej tak:

  1. class base {
  2.  
  3. public function con {
  4. $pdo = itd
  5.  
  6. return $pdo;
  7. }
  8.  
  9. public function wyswietl{
  10. $pdo = $this->con();
  11.  
  12. $st = pdo->query('select * from test');
  13. }
  14.  
  15. itd
  16.  
  17. }


i to dziala ok. probowalem jednak funkcje con przerobic na konstruktor, zebym nie musial wpisywac ciagle tego $pdo = $this->con();
i zrobilem tak:


  1. class base {
  2.  
  3. public function __construct {
  4. $pdo = laczenie z baza
  5.  
  6. return $pdo;
  7. }
  8.  
  9. public function wyswietl{
  10.  
  11.  
  12. $st = $pdo->query('select * from test');
  13. }
  14.  
  15. itd
  16.  
  17. }

ale wtedy to nie dziala, a niby powinno automatycznie byc. jak to poprawic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
darko
post 6.04.2011, 16:04:17
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Konstruktor nie może zwracać wartości, jego zadaniem jest zdefiniowanie niezbędnych danych początkowych potrzebnych do utworzenia egzemplarza obiektu i utworzenie samego obiektu. Od zwracania wartości są metody lub pola publiczne.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
szymonstawi
post 6.04.2011, 16:26:52
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


czyli nie da sie zrobic czegos takiego, ze z kazdym wywolaniem jakiejs metody w klasie automatycznie lacze sie z baza?
Go to the top of the page
+Quote Post
foxbond
post 6.04.2011, 16:31:39
Post #4





Grupa: Zarejestrowani
Postów: 162
Pomógł: 12
Dołączył: 20.12.2009
Skąd: Siedlce

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


Możesz zrobić tak:
  1. class base {
  2. protected $db;
  3.  
  4. public function con {
  5. $this->db = //łączenie
  6. }
  7.  
  8. public function wyswietl{
  9.  
  10. $st = $this->db->query('select * from test');
  11. }
  12.  
  13. itd
  14.  
  15. }
Go to the top of the page
+Quote Post
szymonstawi
post 6.04.2011, 18:21:03
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


w sumie to robilem podobnie wink.gif czytalem cos o konstruktorach i myslalem, ze mozna to automatycznie zrobic, ale ok.

a powie mi ktos jeszcze czemu tam jest protected $db; ? i tak sie tego nie uzywa potem chyba...
Go to the top of the page
+Quote Post
darko
post 6.04.2011, 18:22:38
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Modyfikatory dostępu to podstawy obiektówki, polecam poczytać na ten temat, w sieci jest mnóstwo informacji.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
szymonstawi
post 6.04.2011, 18:41:39
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


ok, juz chyba wiem wink.gif

a jeszcze takie zasadnicze pytanie - potrzebuje miec takie opcje jak laczenie z baza, dodawanie, edytowanie, usuwanie, pobieranie w 3 roznych wersjach. dlaczego lepiej do tego zrobic klase z metodami, niz normalne funkcje? takie dziwne pytanie, ale sie zastanawiam czy w ogole jest sens robienia klas, skoro latwiej jest zwykle funkcje
Go to the top of the page
+Quote Post
darko
post 6.04.2011, 18:58:28
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Poczytaj o programowaniu obiektowym.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
szymonstawi
post 6.04.2011, 19:34:47
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


czytalem, ale chodzi mi o ten konkretny przypadek, chyba mozesz napisac w paru slowach smile.gif
Go to the top of the page
+Quote Post
darko
post 6.04.2011, 20:20:16
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Co znaczy "ten konkretny przypadek"? Nie wiem czy i jak zamierzasz wykorzystywać w przyszłości swój kod, wprowadzając tylko nieznaczne modyfikacje poprzez nadpisanie kilku metod, zamiast ślęczenia nad setkami zmian w kodzie proceduralnym. Do takich mikro-zastosowań dla projektów tworzonych tylko dla siebie nie ma obowiązku stosowania obiektowego paradygmatu, ale nikt Ci tego nie zabroni. To jest zawsze subiektywny wybór i cienka granica, kiedy przejść na oop, a kiedy zostać przy procedurze. Sam musisz tę linię znaleźć. Przeczytaj chociaż ten artykuł na wiki. W tak skromnym tekście masz opisane niektóre zalety kodu obiektowego i jego przewagę nad strukturalnym, wystarczy zajrzeć, przemyśleć, zastanowić się. Dla mnie osobiście kod obiektowy:
- jest znacznie czytelniejszy
- jest łatwiejszy w zarządzaniu i konserwacji, a co za tym idzie tańszy w utrzymaniu
- ułatwia pracę grupową
- cechuje się zupełnie odmiennym podejściem do programowania w porównaniu do kodu strukturalnego i ta inność jest bliższa rzeczywistości, która nas otacza
- pozwala zaoszczędzić wiele czasu i pracy poprzez reusing
- itp.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
szymonstawi
post 6.04.2011, 20:35:27
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 6.04.2011

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


dzieki za odpowiedz smile.gif

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: 14.08.2025 - 06:33