Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][PHP5] Co się stanie jeśli użyję zmiennej klasy która nie istnieje?
extreme-dh
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 3
Dołączył: 25.05.2008

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


Mam pytanie odnoścnie zachowania PHP. Prosty przykład:

  1. class KlasaPHP5{
  2.  
  3. function __construct( $foo ){
  4. $this->bar = $foo;
  5. }
  6.  
  7. }


Moje pytanie, co sie stanie jeśli przypiszę wartość do właściwości klasy, która nie została wcześniej zadeklarowana?
Spotkałem taki przypadek w jednym z moich skryptów przez przypadek i zdziwiło mnie że nie wyrzuciło żadnego błędu.
Czy ta zmienna staje się automatycznie nową składową klasy? Czy różni się ona czymś od tej wcześniej zadeklarowanej?

Zdziwiło mnie to strasznie, myślałem, że przynajmniej jeśli chodzi o klasy PHP będzie bardziej restrykcyjne niż zwykle.

Nie wiem czy to ma znaczenie ale serwer stoi na Windowsie (IIS 6.0, PHP 5.2.14)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Będzie to zwykła właściwość publiczna.
Go to the top of the page
+Quote Post
cojack
post
Post #3





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat(wookieb @ 25.10.2011, 08:39:58 ) *
Będzie to zwykła właściwość publiczna.


Prywatna.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@cojack
  1. class KlasaPHP5{
  2.  
  3. function __construct( $foo ){
  4. $this->bar = $foo;
  5. }
  6.  
  7. }
  8.  
  9. $obj = new KlasaPHP5('Buuu');
  10. echo $obj->bar;
Go to the top of the page
+Quote Post
cojack
post
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Cytat(nospor @ 25.10.2011, 09:34:40 ) *
@cojack
  1. class KlasaPHP5{
  2.  
  3. function __construct( $foo ){
  4. $this->bar = $foo;
  5. }
  6.  
  7. }
  8.  
  9. $obj = new KlasaPHP5('Buuu');
  10. echo $obj->bar;


Faktycznie, publiczna.
Go to the top of the page
+Quote Post
konrados
post
Post #6





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


@extreme-dh: ja dodam jeszcze od siebie, że jako (były) programista c++, to zachowanie php też było dla mnie lekkim szokiem:) Z początku traktowałem to jako głupotę, ale z czasem się przyzwyczaiłem.

Robiąc aplikacje webowe musisz się do tego przyzwyczaić z jeszcze jednego powodu - podobnie działa javascript. Możesz do dowolnego obiektu (instancji klasy) dołożyć dowolne zmienne (a także metody), np. tak:

  1. <script type = 'text/javascript'>
  2. function xyz (){//to będzie obiekt
  3. this.v = 11;
  4. }
  5.  
  6. var x = new xyz;
  7. x.newvar = 13;//nowa zmienna w obiekcie x
  8. alert(x.v+','+x.newvar);//wyświetli 11,13


Tak więc w przypadku aplikacji webowych z użyciem php+js musisz nieco zmienić tok myślenia i się przyzwyczaić(IMG:style_emoticons/default/smile.gif)

W js możesz nawet dołożyć metody do wbudowanych klas - używając prototype.

Ten post edytował konrados 25.10.2011, 09:47:32
Go to the top of the page
+Quote Post
extreme-dh
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 3
Dołączył: 25.05.2008

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


No tak, faktycznie, widać w PHP poszli tropem JS i AS w sumie też.
Niezła "zaskoczka" z mojej strony (IMG:style_emoticons/default/smile.gif) Szczerze powiedziawszy to nie spodziewałem się takiego zachowania.
Go to the top of the page
+Quote Post

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: 27.09.2025 - 15:34