Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dziedziczenie klasy i widok kodu z konstruktora klasy rodzica w klasie potomniej. php5
Forum PHP.pl > Forum > PHP
arek07
Mam taki problem: utworzylem dwie przykladowe klasy: class connect i class logowanie. Chciałem aby był wywołany kod z konstruktora z klasy rodzica connect w klasie potomnej logowanie. W tym celu użyłem w konstruktorze klasy potomnej
  1. <?php
  2. parent::__construct();
  3. ?>

Jest wyświetlone tylko słowo "par" w przeglądarce gdy wywołam klasę
  1. <?php
  2. $logow=new logowanie();
  3. ?>

, a klasa potomna logowanie nie widzi kodu z konstruktora klasy connect poza wyświetleniem słowa "par" gdy wywołam klasę $logow=new logowanie():
  1. <?php
  2. function __construct(){
  3. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  4. mysql_select_db("Sklep_kom");
  5.  
  6. $sess=session_id();
  7. $this->$p="par";
  8. echo $this->$p;
  9. }
  10. ?>


Wydaje mi się, że jest to wina tego że np $p nie jest widziany w klasie potomnej logowanie.

Oto cały kod klas:
  1. <?php
  2. class connect{
  3.  
  4. function __construct(){
  5. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  6. mysql_select_db("baza");
  7.  
  8. $sess=session_id();
  9. $p="par";
  10. echo $p;
  11. }
  12. }
  13.  
  14. class logowanie extends connect{
  15. public function __construct(){
  16. parent::__construct();
  17. echo $p;
  18. }
  19. }
  20.  
  21. $logow=new logowanie();
  22. ?>


Jak zrobić by echo $p w klasie potomnej logowanie wyświetliło komunikat "par" (bo z klasy rodzica echo $p wyświetla słowo "par") oraz jak zrobić by po wywołaniu konstruktora z klasy rodzica w klasie potomnej był widoczny kod:
  1. <?php
  2. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  3. mysql_select_db("baza");
  4.  
  5. $sess=session_id();
  6. ?>

Za pomoc z góry dziękuję.
nospor
poczytaj cos o zasiegu zmiennych oraz o wlasciwosciach klas.

  1. <?php
  2. class connect{
  3. protected $p;
  4. function __construct(){
  5. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  6. mysql_select_db("baza");
  7.  
  8. $sess=session_id();
  9. $this->p="par";
  10. echo $this->p;
  11. }
  12. }
  13.  
  14. class logowanie extends connect{
  15. public function __construct(){
  16. parent::__construct();
  17. echo $this->p;
  18. }
  19. }
  20.  
  21. $logow=new logowanie();
  22. ?>


Cytat
oraz jak zrobić by po wywołaniu konstruktora z klasy rodzica w klasie potomnej był widoczny kod:
questionmark.gif Kod sie wykona.
arek07
Nadal mam problem z widzeniem tych zmiennych :
  1. <?php
  2. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  3. mysql_select_db("Sklep_kom");
  4.  
  5. $sess=session_id();
  6. ?>

Proszę o pomoc jak to zrobić by te zmienne były widoczne w klasie logowanie?
Jest to mi potrzebne do tego by móc wykonać zapytania na bazie.

Przykład podobny:
  1. <?php
  2. class A{
  3.  
  4.  
  5. function __construct(){
  6. $connect=mysql_connect("localhost","","") or die ("Sprawdź połączenie z bazą danych");
  7. mysql_select_db("baza_db");
  8.  
  9. $sess=session_id();
  10. $p="par";
  11. echo $p;
  12. }
  13. }
  14.  
  15. class B extends A{
  16. public function __construct(){
  17. parent::__construct();
  18. $zapytanie="SELECT * FROM produkty";
  19. $rezultat=mysql_query($zapytanie) or die (mysql_error());
  20. ?>

To się nie chce wykonać! A chciałem żeby zapytanie do bazy danych się wykonało.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.