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%)
-----


Temat wiąże się z OOP więc proszę mi tutaj Kohany nie mieszać... (IMG:style_emoticons/default/tongue.gif)

A wracając do tematu, podany przez Ciebie przykład nie powinien nigdy w ogóle się pojawić. Przecież coś tak "dynamicznego" jak ścieżka do jakieś pliku może nawet nie być jednolita w obrębie jednego projektu - o różnych nie wspominając. Temat dotyczy takich sytuacji:
  1. class User {
  2. private $active = false;
  3.  
  4. // VS
  5.  
  6. private $active;
  7.  
  8. public function __construct(...) {
  9. $this->active = false;
  10.  
  11. ...
  12. }
  13. }
  14.  
  15. class Logger {
  16. const WARNING = 1;
  17. const ERROR = 2;
  18. const FATAL_ERROR = 4;
  19.  
  20. const ALL = 7;
  21.  
  22. private $level = self::ALL;
  23.  
  24. // VS
  25.  
  26. private $level;
  27.  
  28. public function __construct(...) {
  29. $this->level = self::ALL;
  30.  
  31. ...
  32. }
  33. }


I trzeba rozróżnić to co w ogóle może być domyślne, od tego co jest bardziej "dynamiczne" i nie ma wartości domyślnej:
  1. class SomeClass {
  2. private Random random = new Random(); // OK
  3. private BufferedReader stdin = new BufferedReader(...("/ścieżka/do/pliku/z/przykładowo/logami.log")); // BŁĘDNE
  4. }
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: 11.10.2025 - 22:32