Thread View: pl.comp.lang.php
4 messages
4 total messages
Started by jivanmukta
Sun, 13 Jul 2014 15:18
parent::__construct() w modelach aplikacji CodeIgniterowych
Author: jivanmukta
Date: Sun, 13 Jul 2014 15:18
Date: Sun, 13 Jul 2014 15:18
24 lines
1868 bytes
1868 bytes
Napisałem tak:
<?php
class Bazowa {
public function __construct() {
echo 'Bazowa';
}
}
class Pochodna extends Bazowa {
}
$obiekt = new Pochodna();
i wyświetliło się: Bazowa. Czyli konstruktor jest widoczny w klasie Pochodna.
Dlaczego w takim razie w przykładowych aplikacja CodeIgnitera programiści wołają konstruktor klasy bazowej CI_Model:
class Sample_model extends CI_Model {
public function __construct() {
parent::__construct();
}
...
}
Przecież konstruktor Sample_model::__construct w ogóle nie jest potrzebny!
Proszę o wytłumaczenie.
Re: parent::__construct() w modelach aplikacji CodeIgniterowych
Author: Kviat
Date: Sun, 13 Jul 2014 18:29
Date: Sun, 13 Jul 2014 18:29
52 lines
2307 bytes
2307 bytes
W dniu 2014-07-13 17:18, jivanmukta@poczta.onet.pl pisze:
> Napisałem tak:
>
> <?php
> class Bazowa {
> public function __construct() {
> echo 'Bazowa';
> }
> }
> class Pochodna extends Bazowa {
> }
> $obiekt = new Pochodna();
>
> i wyświetliło się: Bazowa. Czyli konstruktor jest widoczny w klasie Pochodna.
> Dlaczego w takim razie w przykładowych aplikacja CodeIgnitera programiści wołają konstruktor klasy bazowej CI_Model:
>
> class Sample_model extends CI_Model {
> public function __construct() {
> parent::__construct();
> }
> ...
> }
>
> Przecież konstruktor Sample_model::__construct w ogóle nie jest potrzebny!
> Proszę o wytłumaczenie.
Bo możesz zrobić tak:
class Sample_model extends CI_Model {
public function __construct() {
cośtamcośtam....
parent::__construct();
}
...
}
albo tak:
class Sample_model extends CI_Model {
public function __construct() {
parent::__construct();
cośtamcośtam....
}
...
}
Czyli w konstruktorze potomka zrobić coś przed wywołaniem konstruktora
rodzica, albo po.
Pozdrawiam
Piotr
Re: parent::__construct() w modelach aplikacji CodeIgniterowych
Author: Kviat
Date: Sun, 13 Jul 2014 18:33
Date: Sun, 13 Jul 2014 18:33
14 lines
1604 bytes
1604 bytes
W dniu 2014-07-13 17:18, jivanmukta@poczta.onet.pl pisze: > Przecież konstruktor Sample_model::__construct w ogóle nie jest potrzebny! > Proszę o wytłumaczenie. A, i jeszcze jedno. Zapewne przykład z Sample_model ma służyć początkującym jako "baza" czy podstawa szkieletu do własnej zmiany i wtedy takie przykładowe wywołanie konstruktora rodzica ma sens ze względów powiedzmy dydaktycznych... :) Tak strzelam. Pozdrawiam Piotr
Re: parent::__construct() w modelach aplikacji CodeIgniterowych
Author: xantiros
Date: Mon, 14 Jul 2014 09:21
Date: Mon, 14 Jul 2014 09:21
34 lines
2160 bytes
2160 bytes
W dniu 2014-07-13 17:18, jivanmukta@poczta.onet.pl pisze:
> Napisałem tak:
>
> <?php
> class Bazowa {
> public function __construct() {
> echo 'Bazowa';
> }
> }
> class Pochodna extends Bazowa {
> }
> $obiekt = new Pochodna();
>
> i wyświetliło się: Bazowa. Czyli konstruktor jest widoczny w klasie Pochodna.
> Dlaczego w takim razie w przykładowych aplikacja CodeIgnitera programiści wołają konstruktor klasy bazowej CI_Model:
>
> class Sample_model extends CI_Model {
> public function __construct() {
> parent::__construct();
> }
> ...
> }
>
> Przecież konstruktor Sample_model::__construct w ogóle nie jest potrzebny!
> Proszę o wytłumaczenie.
>
A co tu tłumaczyć,
Każda klasa ma swój konstruktor, tutaj wyraźnie zaznaczono iż jeśli byś
dziedziczył po CI_Model i chciał mieć własny konstruktor, koniecznie w
nim musisz wywołać konstruktor CI_Model aby wszystko działało jak należy
:D, jeśli nie używasz w swojej klasie konstruktora to nie musisz tego
kodu umieszczać, gdyż domyślnie zostanie wywołany konstruktor rodzica.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads