Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> konstruktor klasy dziedziczonej
barii
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.02.2008

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


Chce właśnie stworzyć klasę obsługującą bazę danych. W jej konstruktorze chciałbym połączyć się z bazą danych.

  1. <?
  2. class datebase{
  3.  
  4. function __construct(){
  5. // połączenie z bazą danych
  6. }
  7.  
  8. function createTable($parametry){
  9. // tworzenie tablicy
  10. }
  11.  
  12. function getDateTable(){
  13. // pobieranie danych z tabeli
  14. }
  15.  
  16. ... // pozostałe metody
  17.  
  18. }
  19. ?>


W przypadku dziedziczenia tej klasy

Chce właśnie stworzyć klasę obsługującą bazę danych. W jej konstruktorze chciałbym połączyć się z bazą danych.

  1. <?
  2. class news extends datebase{
  3.  
  4. function pobierz_dane($parametry){
  5. $this->getDateTable($parametry);
  6. }
  7.  
  8. ... // pozostałe metody
  9.  
  10. }
  11. ?>


Czy jak wykonam skrypt
  1. $news -> $news();
  2.  
  3. $news-> pobierz_dane($parametry);



to zawsze konstruktor klasy datebase połączy się z bazą?


--------------------
www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Uzywaj php5.
W kalsie news dodajesz takie cos:
  1. public function __construct() {
  2.  
  3. parent::__construct();
  4.  
  5. }

I tyle.
A tak w ogole to klasa news nie ma nic wspolnego z klasa database po co ona ja rozszerza, powinienes przeyslas instancje klasy database do konstruktora klasy news czyli:
  1. class news {
  2.  
  3. private $db;
  4.  
  5. public function __construct(Database $db) { //lub $db
  6.  
  7. $this->db = $db; //tu masz polaczenie bazy danych
  8.  
  9. }
  10.  
  11. //reszta kodu
  12.  
  13. }


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
LBO
post
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Tak, chyba, że go nadpiszesz.

  1. // A łączy się z bazą w konstruktorze
  2. class A {
  3. public function __construct() {
  4. // polaczenie z baza
  5. }
  6. }
  7.  
  8. // B nie połączy się z bazą, nadpisała konstruktor A
  9. class B extends A {
  10. public function __construct() {
  11. }
  12. }
  13.  
  14. //C połączy się z bazą, nadpisała konstruktor A, ale i tak go wywołała
  15. class C extends A {
  16. public function __construct() {
  17. parent::__construct();
  18. }
  19. }
  20.  
  21. //D połączy się z bazą, wykorzystuje konstruktor A bezpośrednio
  22. class D extends A {
  23. }


+1 dla @marcio za zwrócenie uwagi na błędy projektowe

Ten post edytował LBO 15.04.2010, 12:18:08
Go to the top of the page
+Quote Post
barii
post
Post #4





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.02.2008

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


Cytat(marcio @ 15.04.2010, 13:11:16 ) *
Uzywaj php5.


Chodzi Ci o to że powinienem nadawać metodom rodzaj dostępu? czy coś jeszcze jest główną zasadą w PHP5?


--------------------
www.WielkaWyspa.com.pl - portal dla mieszkańców Wielkiej Wyspy Wrocław
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


No rodzja dostepu,jawne konstruktory/destruktory, klasy abstrakcyjne i interfejsy chyba tez,stale klasowe i moze jakies nowe metody magiczne.

btw: jeszcze final masz w php5 :]

Ten post edytował marcio 15.04.2010, 12:51:57


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@marcio:
Co w kodach z pierwszego postu wskazuje na używanie PHP4? Jak dla mnie jest to PHP5 (__construct). Jeśli uwagę twoją zwrócił fakt braku public to jest to domyślny modyfikator dostępu więc w sumie nie ma potrzeby jego pisania (aczkolwiek świadczy to o "schludności" piszącego).
Go to the top of the page
+Quote Post
marcio
post
Post #7





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Cytat(phpion @ 15.04.2010, 14:16:15 ) *
@marcio:
Co w kodach z pierwszego postu wskazuje na używanie PHP4? Jak dla mnie jest to PHP5 (__construct). Jeśli uwagę twoją zwrócił fakt braku public to jest to domyślny modyfikator dostępu więc w sumie nie ma potrzeby jego pisania (aczkolwiek świadczy to o "schludności" piszącego).

Akurat konstrukt w pierwszej klasie nie zauwazylem czytalem w pospiechu.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
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 Aktualny czas: 20.08.2025 - 18:47