Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Różnica między klasą a obiektem..., Jedno z podstaw obiektówki, ale mnie męczy...
uirapuru
post 19.05.2009, 05:01:18
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005
Skąd: Wrocław

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


W moim rozumowaniu klasa to jakiś tam przepis na obiekt, obiekt jest natomiast ucieleśnieniem klasy. Jeśli się mylę, to mnie oświećcie. Co z tego wynika? Tu moje pytanie. Jaka jest różnica w odwoływaniu się takim:

Klasa::jakas_metoda();

a

Obiekt->jakas_metoda();

Chodzi mi nie o teorie teraz, ale o zastosowania praktyczne. Mam rozumieć, że pierwsza metoda sie wykona, ale nie zostanie faktycznie utworzony obiekt?


--------------------
PHP & Symfony Purple Belt ;)

DDD & architecture wannabe // PHP ZCE
Go to the top of the page
+Quote Post
Crozin
post 19.05.2009, 05:20:42
Post #2





Grupa: Zarejestrowani
Postów: 6 474
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Pierwsze to metoda klasy, drugie to metoda obiektu. Naprawdę nie czytałeś w manulu niczego na temat statyczynych metod/pól?
Go to the top of the page
+Quote Post
uirapuru
post 19.05.2009, 06:34:36
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005
Skąd: Wrocław

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


Jest wcześnie rano i trochę nie umiem pojąć różnicy... ;D Tak na chłopski rozum...


--------------------
PHP & Symfony Purple Belt ;)

DDD & architecture wannabe // PHP ZCE
Go to the top of the page
+Quote Post
erix
post 19.05.2009, 07:58:41
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Chodzi mi nie o teorie teraz, ale o zastosowania praktyczne. Mam rozumieć, że pierwsza metoda sie wykona, ale nie zostanie faktycznie utworzony obiekt?

Tak. Statycznych metod używasz, jeśli zastosowanie nie wymaga wielu instancji danej klasy. Czyli np. robisz klasę owoc:

  1. <?php
  2. $x = new Fruit();
  3. $x->kind = 'apple';
  4.  
  5. $y = new Fruit();
  6. $x->kind = 'pear';
  7. ?>


I masz rozróżnienie na owoce. Ale:
  1. <?php
  2. Fruit::$kind = 'grape';
  3. ?>

I możesz tylko jeden owoc w kodzie zmajstrować.

PS. Dodaj tag do tematu


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Crozin
post 19.05.2009, 15:05:38
Post #5





Grupa: Zarejestrowani
Postów: 6 474
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Tak, wiem... Java - ale całkiem fajnie są wyjaśnione podstawy prog. obiektowego: http://java.sun.com/docs/books/tutorial/java/index.html
Object-Oriented Programming Concepts, Classes and Objects, Interfaces and Inheritance
Go to the top of the page
+Quote Post
cojack
post 19.05.2009, 23:58:28
Post #6





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

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


Cytat(erix @ 19.05.2009, 08:58:41 ) *
I masz rozróżnienie na owoce. Ale:
  1. <?php
  2. Fruit::$kind = 'grape';
  3. ?>

I możesz tylko jeden owoc w kodzie zmajstrować.


Jaki znowu $kind? Nie odwołasz się statycznie do zmiennej nie statycznej. Zwróci Ci błąd Fatal error: Access to undeclaerd static property: foo:$a in Comand line on line 1

Przykład klasy: class foo {public $a;} echo foo::$a;

Możesz się odwołać w ten sposób ale tylko wtedy jeżeli $a w klasie jest static, ale dziwne jest to że jak jest static to można na niej posługiwać się obiektem klasy.

Tak więc reasumując, :: używa się jak nie jest nam potrzebny obiekt klasy, tylko np wywołanie metody z klasy. Amba.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
erix
post 20.05.2009, 12:39:19
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Jaki znowu $kind? Nie odwołasz się statycznie do zmiennej nie statycznej. Zwróci Ci błąd Fatal error: Access to undeclaerd static property: foo:$a in Comand line on line 1

Zrobiłem za duży skrót myślowy; chodziło mi o statyczną, ale nie napisałem, mój błąd. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.11.2018 - 21:03