Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]OOP Ucze się... konstruktor
cykcykacz
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

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


Witam,
nie umiem ogarnąć konstruktora kiedy go używamy i po co?
Może ktoś mi wytłumaczy?
W poniższym przykładzie mamy klasę dog w której mamy publiczny dostęp do atrybutu $name oraz konstruktora.
Z tego co rozumiem konstruktor jest to metoda która w chwili powstania obiektu nadaje mu jakiś właściwości?
Ale po co i kiedy tego mam używać?
klasa
Kod
<?php
class Dog{
    public $name;//atrybut przechowujący imię psa

    /*konstruktor*/
    public function __construct($name){
        $this->name = $name;
    }
    public function roar(){
        echo 'chał chał';
    }
    //ciach
}
?>

obiekt
Kod
<?php
require('class.dog.php');
$reksio = new Dog('Reksio');
echo $reksio->name; //atrybut "name" publiczny, więc wyświetlone zostanie 'Reksio'
$reksio->roar(); //metoda roar() publiczna, więc wyświetlone zostanie 'chał chał'
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





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

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


Cytat
Właśnie dlatego jedyną dla mnie w pełni naturalną formą jest ustawianie atrybutów poprzez domyślną wartość parametru konstruktora
Czyli na dobrą sprawę przenosisz jedynie sztywno zapisaną wartość domyślną z miejsca deklaracji właściwości w miejsce deklaracji argumentu dla konstruktora, tak? Przecież to nie zmienia kompletnie niczego. Klasa nadal wie jak obiekt może zostać skonstruowany (chociaż nie bardzo wiem co złego z tego faktu wynika). Dodatkowo możesz skończyć z paskudnym konstruktorem posiadającym powiedzmy trzy normalne, wymagane argumenty (ok) i jeszcze sześć opcjonalnych (niezbyt fajna sprawa).

Na dobrą sprawę jedyne co wg mnie możesz przy takim podejściu zyskać to pozbycie się jakiś nadmiarowych przypisań wartości. Ale nie oszukujmy się... nie jest to nawet warte rozpatrzenia, bo wartości domyślne stosuje się tam gdzie:
1. Pokrywają one zdecydowaną większość przypadków użycia.
2. Są "lekkie". Raczej nie daje się jako domyślnych obiektów które potrzebują 10 MiB pamięci i 2 sekund na sam start. A w normalnym przypadku (gdy jest to powiedzmy przykładowo wartość logiczna) domyślne przypisanie wartości powiedzmy false tylko po to by zaraz potem czy to przez konstruktor czy jakiegoś settera zmienić tą wartość na true nie kosztuje nic.
Go to the top of the page
+Quote Post

Posty w temacie
- cykcykacz   [PHP]OOP Ucze się... konstruktor   20.04.2011, 18:44:30
- - mat-bi   Ludzie... http://museum.webcity.pl/webcity/artyku...   20.04.2011, 19:13:59
- - cykcykacz   Już miej więcej się domyśliłem, że konstruktora uż...   20.04.2011, 19:39:27
- - thek   Ech... Konstruktor to SPECJALNA metoda, która ZAWS...   20.04.2011, 20:07:51
- - Crozin   @thek: A to niby czemu coś takiego miałoby być błę...   20.04.2011, 20:47:55
- - cykcykacz   Odbiegając od tematu ciężko się nauczyć mi osobiśc...   20.04.2011, 21:23:32
- - everth   @Crozin - błąd nie ale thek ma trochę racji, w pod...   20.04.2011, 22:07:21
- - thek   Może wyjaśnię o co mi chodzi, bo everth "widz...   21.04.2011, 09:43:35
- - Crozin   @thek: jak zwykle nie zawiódł. Ładny wywód i trzyk...   21.04.2011, 10:15:43
- - cykcykacz   Stworzyłem klasę, która łączy się z bazą oraz pobi...   21.04.2011, 19:13:02
- - mat-bi   W konstruktorze nie robimy zwykle takich rzeczy ja...   21.04.2011, 19:20:02
- - thek   Spróbuj w C/C++ tak zrobić, to kompilator Ci się n...   21.04.2011, 21:55:17
- - everth   Tak mnie naszło - czy PHP w trakcie inicjowania ob...   21.04.2011, 22:15:33
- - Crozin   @thek: A jakiś argument przeciw, ale nie bazujący ...   21.04.2011, 22:49:35
- - thek   Czy ja wiem czy takie nie domyślne? Mam klasę w Ko...   22.04.2011, 01:44:36
- - Crozin   Temat wiąże się z OOP więc proszę mi tutaj Kohany ...   22.04.2011, 10:52:30
- - thek   No nie mów, że Kohana to nie OOP? Ja rozumiem, że...   22.04.2011, 11:47:46
- - Crozin   Ale przecież oczywistym jest, że jeżeli ustalenie ...   22.04.2011, 12:38:25
- - thek   Cytatjeżeli ustalenie czegoś nie jest tak trywialn...   22.04.2011, 17:08:53
- - Crozin   Ależ Ty mącisz... Wymieszałeś prywatne sprawy obi...   22.04.2011, 17:33:02
- - thek   Ależ nie mieszam... Zauważ co uznaję za prawidłowe...   22.04.2011, 21:29:47
- - everth   [bezzwiazkuztematem] Nie wiem czy zauważyliście al...   22.04.2011, 22:11:42
- - Crozin   CytatWłaśnie dlatego jedyną dla mnie w pełni natur...   23.04.2011, 14:15:45
- - thek   Jak najbardziej masz rację Crozin. To nie zmienia ...   24.04.2011, 21:54:31
- - everth   @thek trochę masz dziwne podejście z tymi argument...   25.04.2011, 12:40:58
- - darko   ~cykcykacz kontynuujesz temat po prawie dwóch lata...   25.04.2011, 13:39:18
- - cykcykacz   ~darko faktycznie masz mnie nawet zapomniałem o t...   25.04.2011, 16:20:24
- - r4xz   no na pewno aby przyśpieszyć naukę przyda się prze...   25.04.2011, 16:39:49
- - darko   ~cykcykacz jeśli chodzi o wymagania pracodawców na...   25.04.2011, 18:08:35
- - cykcykacz   ~darko CytatMoże to, co dalej napiszę nie będzie ...   25.04.2011, 19:58:03
- - darko   Php uczyłem się 4 miesiące znając już języki: c, c...   25.04.2011, 20:13:44
- - cykcykacz   To ja dalej zasiadam do nauki PHP i nie tylko Dz...   25.04.2011, 20:28:23
- - Crozin   @thek: Uczepiłeś się jednego konkretnego przypadku...   25.04.2011, 20:57:49
- - darko   ~Crozin zgadza się, że przestrzeń globalna jest zł...   25.04.2011, 21:19:02
- - everth   Paradygmat pewnie żaden, ale czy kosmetyka? Jeśli ...   25.04.2011, 22:59:13
- - thek   @Crozin: Nie wiem czy zauważyłeś, ale to o czym ja...   26.04.2011, 02:23:29
- - Crozin   @darko: Nie wiem z jakich Ty to FW korzystasz, ale...   26.04.2011, 12:26:48
- - thek   Widać sam nie zauważyłem, że w czasie pisania skró...   26.04.2011, 12:40:37
- - everth   @thek Ciekawy art na temat umieszczania argumentów...   26.04.2011, 18:31:27
- - darko   Cytat(Crozin @ 26.04.2011, 13:26:48 )...   26.04.2011, 19:14:10
- - thek   @everth: faktycznie fajny, ale szkoda, że na wąski...   26.04.2011, 21:14:27


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 - 11:06