![]() |
![]() |
![]()
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ł' ?> |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Paradygmat pewnie żaden, ale czy kosmetyka? Jeśli klasa bazowa używa powiedzmy kilkudziesięciu właściwości (albo i więcej) domyślnie inicjowanych a klasa potomna z jakichś powodów tylko kilku to mamy problem - bo albo musimy wszystkie nadpisać, albo uznać że narzut jest pomijalny - ale jeśli taki obiekt jest tworzony kilkaset (albo i kilka tys.) razy w czasie wykonania to narzut może być zauważalny, pomijając fakt że to marnotrawstwo. Przykład (dość abstrakcyjny).
W Javie pewnie i tak nie ma różnicy bo HotSpot jest trochę bardziej wysublimowany niż to co mamy w PHP i takie przykłady jak Crozina czy mój powyższy zostałyby pewnie zoptymalizowane i wykonywałyby się tak samo bez znaczenia na miejsce inicjowania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 20:27 |