/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
child klasser og constructor
Fra : Ronaldo


Dato : 12-08-06 17:14

Jeg har lavet en mysql klasse, som jeg gerne vil extende til en håndfuld
andre child klasser, som hver især kun er afhængig af mysql klassen og ikke
hinanden.

Jeg er løbet ind i det problem med at min mysql constructor har nogle
argumenter, som php brokker sig over når jeg laver en ny instans af en child
klasse. Den siger at jeg ikke leverer nogle argumenter til mysql klassen.

Jeg gør det at jeg først skaber en instans af mysql klassen, og så en ny af
child klassen, men alligevel vil den have argumenter fra child klassen.

$mysql = new mysql("localhost", "root", "123456");
$child = new child();

Problemet er at jeg gerne vil kunne lave en constructor med tilhørende
argumenter i en child klasse. Det kan ikke lade sig gøre hvis jeg skal føde
en child instans med argumenter til mysql klassen.

Hjælp




 
 
Carsten Pedersen (12-08-2006)
Kommentar
Fra : Carsten Pedersen


Dato : 12-08-06 20:17

Hej, Ronaldo!

"Ronaldo" <freddie@brnet.dk> skrev i en meddelelse
news:44ddfe30$0$15790$14726298@news.sunsite.dk...
> Jeg har lavet en mysql klasse, som jeg gerne vil extende til en håndfuld
> andre child klasser, som hver især kun er afhængig af mysql klassen og
> ikke hinanden.
>
> Jeg er løbet ind i det problem med at min mysql constructor har nogle
> argumenter, som php brokker sig over når jeg laver en ny instans af en
> child klasse. Den siger at jeg ikke leverer nogle argumenter til mysql
> klassen.
>
> Jeg gør det at jeg først skaber en instans af mysql klassen, og så en ny
> af child klassen, men alligevel vil den have argumenter fra child klassen.

Det er kun nødvendigt at lave en instans af child-klassen. mysql-klassen
bliver automatisk en del af alle de klasser, der udvider den. Konstruktøren
i din child-klasse skal så have overført argumenterne til både sin egen
klasse og den klasse, den udvider. Kald så konstruktøren i den udvidede
klasse fra konstruktøren i child-klassen. Det er en god ide at gøre dette
som det allerførste, da den nedarvede del af klassen så allerede er
initialiseret, inden du begynder at initialisere udvidelsen.

> $mysql = new mysql("localhost", "root", "123456");
> $child = new child();
>
> Problemet er at jeg gerne vil kunne lave en constructor med tilhørende
> argumenter i en child klasse. Det kan ikke lade sig gøre hvis jeg skal
> føde en child instans med argumenter til mysql klassen.

Nu skriver du desværre ikke hvilken version af PHP, du anvender, så det er
svært at give noget konkret svar på, hvordan du rent faktisk skal gøre, da
objektmodellen er ændret betydeligt fra version 4 til version 5. Ikke mindst
hvad angår klassernes konstruktører.

Her er nogle nyttige links til PHP 4's objektmodel:

http://www.php.net/manual/en/language.oop.constructor.php
http://www.php.net/manual/en/keyword.paamayim-nekudotayim.php
http://www.php.net/manual/en/keyword.parent.php

og til PHP 5:

http://www.php.net/manual/en/language.oop5.basic.php
http://www.php.net/manual/en/language.oop5.decon.php
http://www.php.net/manual/en/language.oop5.paamayim-nekudotayim.php

Mvh

C@rsten




Ronaldo (13-08-2006)
Kommentar
Fra : Ronaldo


Dato : 13-08-06 12:14

Det virkede fremragende, tak skal du have Carsten.

"Carsten Pedersen" <cape@invalid.invalid> skrev i en meddelelse
news:44de293f$0$3529$edfadb0f@dread11.news.tele.dk...

> Det er kun nødvendigt at lave en instans af child-klassen. mysql-klassen
> bliver automatisk en del af alle de klasser, der udvider den.
> Konstruktøren i din child-klasse skal så have overført argumenterne til
> både sin egen klasse og den klasse, den udvider. Kald så konstruktøren i
> den udvidede klasse fra konstruktøren i child-klassen. Det er en god ide
> at gøre dette som det allerførste, da den nedarvede del af klassen så
> allerede er initialiseret, inden du begynder at initialisere udvidelsen.



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste