Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dynamiczne dodawanie właściwości do obiektu, czy to normalne w PHP5 ?
nevt
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


witajcie, może jestem durny, ale przewaliłem manual we wszystkie strony i nie znalazłem uzasadnienia do poprawności poniższej konstrukcji w PHP5, a jednak ona działa:

  1. <?php
  2. class x{};
  3. $x = new x();
  4. $x->test = 'dlaczego to tworzy nową właściwość w klasie?';
  5. echo $x->test;
  6. echo '<br />';
  7. ?>

a jeżeli to jest z jakichś dziwnych powodów normalne w PHP - to czy można jakoś ten mechanizm wyłączyć... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Heh, no można się o to spierać, ale ten bug...eee...feature nie stoi w sprzeczności z OOP - jest raczej zaburzeniem samego języka wynikającym z jego filozofii. Wydaje mi się, że twórcy podeszli do tego jak do normalnych zmiennych, czyli
  1. <?php
  2. $foo=true;
  3. $o->foo=true;
  4. ?>

Oznaczają to samo - inicjalizację zmiennej i jednoczesne przypisanie jej typu i wartości. Zauważcie, że intencja wydaje się słuszna - mniej pisania - lżejszy kod.
  1. <?php
  2. class A{}
  3. $o=new A();
  4. $o->foo=true;
  5. // jest lżejsze niż
  6. class A
  7. {
  8.  var foo;
  9. }
  10. $o=new A();
  11. $o->foo=true;
  12. ?>

Specjalnie użyłem var, bo taka była filozofia wcześniejszych wersji PHP. Skoro php5 jest kompatybilne z 4, to taka konstrukcja jest jak najbardziej poprawna. Skrypty PHP miały być szybkie, mało zajmować na dysku i pochłaniać mało pamięci. Jak to wygląda dla interpretera? Czy jeśli nie tworzy składowej na starcie, to oszczędza trochę pamięci? (nie zawsze trzeba z tej zmiennej korzystać)

Pozdrawiam
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: 11.10.2025 - 01:43