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





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

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


Cytat
Stosowanie pól publicznych i jawne odwołania do nich to powinna być rzadkość.
Więc potencjlny błąd możesz popełnić bardzo rzadko.

a czy ja gdzieś napisałem o publicznych właściwościach... (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
przecież w kodzie klasy bez przerwy są odwołania do jej właściwości... to właśnie dlatego się wkurzyłem na tą konstrukcję bo kilka godzin straciłem na oświecenie że przy literówce w stylu:
  1. <?php
  2. class test
  3. {
  4.  private $dlugaNazwaZmiennej = 'TEST';
  5.  
  6.    public function __construct($value)
  7.    {
  8.        $this->dlugaNawzaZmiennej = $value;
  9.    }
  10.    
  11.    public function get()
  12.    {
  13.        return $this->dlugaNazwaZmiennej;
  14.    }
  15. }
  16.  
  17. $test = new test('ZMIANA');
  18. echo $test->get();
  19. ?>

nie dostaję od PHP najmniejszej uwagi czy ostrzeżenia...

a co do logiki to mnie nie przekonacie. nie można stawiać znaku równości między zmienną strukturalną i właściwością obiektu. to zachowanie php narusza jedną z podstawowych zasad OOP czyli hermetyzację. przecież user sobie może wrzucać do dowolnej klasy dowolne dane, na których metody obiektu nie wykonują żadnych operacji. nie mam pretensji że tak jest - tak to sobie autorzy PHP wymyślili i trudno - dostosuję się - ale nie wciskajcie mi, że jest to normalne i logiczne zachowanie kodu przy OOP... i na pewno niczego nie ułatwia a tylko potencjalnie komplikuje debugowanie aplikacji.

proponuję zakończyć dyskusję, pozdrawiam wszystkich.
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: 10.10.2025 - 06:01