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
sobstel
post
Post #2





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Wydaje mi się, że to zachowanie jest całkowicie normalne dla PHP jako języka, w którym nie trzeba deklarować zmiennych wprost etc. I skoro to samo odnosi się do zmiennych, więc naturalne jest, że tak samo działa dla właściwości obiektu. W obu przypadkach PHP wyrzuca też błędy E_NOTICE (odpowiednio Undefined variable i Undefined property), co należy interpretować tak, że "pozwalamy tak robić, ale nie polecamy".

Co do przykładu LBO, to rzeczywiście takie zachowanie wydaje się trochę dziwne, ale chyba zostało pozostawione bardziej ze względu backward compatibilty, skoro obecnie w php5 wyrzuca Strict standards: Creating default object from empty value.
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: 9.10.2025 - 23:40