Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP5: Zmiana wlasciwosci (zmienne obiektowe), Zmiana wlasciwosci glownego obiektu z klasy rozszerzonej...
mxm
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 9.06.2005

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


  1. <?php
  2. class klasa1 {
  3. var $ID;
  4.  
  5. function klasa1() {
  6. $this->ID = 'wartosc1'; }
  7. }
  8.  
  9. class klasa2 extends klasa1 {
  10.  
  11. function klasa2() {
  12. $this->ID = 'wartosc2';
  13. $this->funkcja1(); }
  14.  
  15. function funkcja1() {
  16. $klasa1->ID = 'wartosc3'; }
  17. }
  18.  
  19. $obiekt1 = new klasa1();
  20. $obiekt2 = new klasa2();
  21.  
  22. echo 'Zmienna <b>$obiekt1</b>:'.$obiekt1->ID;
  23. echo '<br>Zmienna <b>$obiekt2</b>:'.$obiekt2->ID;
  24. ?>


Klasa1 ma zdefiniowana wlasciwosc ID. Klasa2 takze definiuje swoja wlasnosc dla swojej klasy. Natomiast funkcja ma za zadanie zmiany zmiennej w klasie nadrzenej (klasa1). Jednak to nie dziala. Jak mozna z obiektow podrzędnych zmieniac wlasciwosci zmiennych nadrzędnych?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


mxm:
obiektowka w php4 jest zje...psuta

Ty tworzysz dwa obiekty
  1. <?php
  2. $obiekt1 = new klasa1();
  3. $obiekt2 = new klasa2();
  4. ?>
,
ktore NIE wspoldziela zmiennej instancji $ID, bo to jest zmienna instancji -- kazdy OBIEKT ma swoja.
Gdyby to byla zmienna KLASY (inaczej: statyczna) to by ci zadzialalo --
  1. <?php
  2. class Rodzic
  3. {
  4. protected static $id;
  5. public function __construct() // konstruktor, odpowiednik Rodzic() w php4
  6. {
  7. self::$id = '1';
  8. }
  9.  
  10. public function printId()
  11. {
  12. print( self::$id . "<br />n" );
  13. }
  14. }
  15.  
  16. class Dziecko extends Rodzic
  17. {
  18. public function __construct() // konstruktor, odpowiednik Rodzic() w php4
  19. {
  20. self::$id = '2';
  21. }
  22. }
  23.  
  24. $r = new Rodzic();
  25. $r->printId(); // 1
  26. $d = new Dziecko();
  27. $d->printId(); // 2
  28.  
  29. $r->printId(); // 2 !!
  30. ?>

O taki efekt ci chodzilo?

Tylko nie wiem jak to w php4 zapisac :/ (patrz poczatek postu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Doczytaj o roznicach miedzy Klasa a Obiektem (instancja Klasy)
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: 5.10.2025 - 05:22