Avatar billede xas3r Nybegynder
17. oktober 2007 - 16:22 Der er 16 kommentarer og
1 løsning

(OOP) Class

Spørgsmålet er simpelt.

Kan man definere Classes inden i classes?

eks:

class overordnetClass {
    class underClass{

    }
}

Umiddelbart virker dette her ikke i php. Så er der en anden måde at gøre dette på?
I rigtige sprog, styres classerne af en "namespace", og sådan en er der ikke umiddelbart i PHP. Såehh hvordan gøre det.
Avatar billede erikjacobsen Ekspert
17. oktober 2007 - 16:27 #1
Du kan heller ikke i PHP definere en class i en class. Du kan definere dem "ved siden af hinanden". Så kan du definere i den ene klasse, at den har nogle attributter af den anden klasse. Og så bør du også lige fortælle om du bruger PHP5 (som du bør), eller PHP4 (som man skal holde sig fra).
Avatar billede xas3r Nybegynder
17. oktober 2007 - 16:30 #2
ja... PHP5 er vel en selfølge for OOP i PHP?.. Desuden, ja så kan de bruges ved siden af hinanden og du kan bruge extends men kun til én anden. Hvis man nu vil kunne komme i kontakt med flere forskellige classes i én class, er det så ikke muligt kan jeg forstå.
Avatar billede erikjacobsen Ekspert
17. oktober 2007 - 16:36 #3
Så skal du bestemme dig til om det er en "is-a" eller "has-a" situation du har. På det punkt er der ingen synderlig forskel på PHP5 og fx. Java.
Avatar billede styrk Nybegynder
17. oktober 2007 - 16:37 #4
class a
{

// noget? ;p

}

class b
{
    private $a;

    public function __construct()
    {
        $this->a = new a;
        // arbejd med noget?? ;p
    }

}
Avatar billede xas3r Nybegynder
17. oktober 2007 - 16:38 #5
Nu arbejder jeg normalt i C#, og derfor undrede jeg mig over at jeg ikke kunne gøre det. Men jeg ved de arbejder på en "namespace" agtig løsning til version 6.
Avatar billede xas3r Nybegynder
17. oktober 2007 - 16:42 #6
styrk: Her definere du ikke en class inde i en anden class. Men bruger dig af den løsning som erikjacobsen postede først :D. Hvorefter du laver et objekt, ud fra a, som du så benytter dig af.
Avatar billede Slettet bruger
17. oktober 2007 - 16:47 #7
hvornår bruger man så extends?
Avatar billede styrk Nybegynder
17. oktober 2007 - 16:50 #8
Er det ikke også det du egentlig søger? :p
Avatar billede xas3r Nybegynder
17. oktober 2007 - 16:56 #9
Hehe.. well... Spørgsmålet var jo egentligt bare kan man have en class inde i en anden.. Ja eller Nej :D

extends = arv.
Her arver du bare fra en anden class. Men du behøver ikke extends.. Du kan bare gøre som styrk viste :) Det er der samme.
Avatar billede erikjacobsen Ekspert
17. oktober 2007 - 17:01 #10
Det styrk viser er en "has-a". Extends er en "is-a". Det er meget langt fra det samme.
Avatar billede xas3r Nybegynder
17. oktober 2007 - 17:08 #11
Forklar venligst forskellen så. Umiddelbart nedarver de begge, og det er vel det samme de får ud af det.
Avatar billede erikjacobsen Ekspert
17. oktober 2007 - 17:10 #12
Du sætter dig med en god bog om objektorienteret programmering og finder ud af forskellen på "is-a" og "has-a". Der er ingen grund til at du skriver kode med klasser, indtil du er fortrolig med forskellen.
Avatar billede xas3r Nybegynder
17. oktober 2007 - 17:22 #13
OKay fair nok.
Avatar billede xas3r Nybegynder
17. oktober 2007 - 17:45 #14
erickjacobsens svar er accepteret.
Avatar billede erikjacobsen Ekspert
17. oktober 2007 - 20:04 #15
Jeg samler slet ikke på point, tak. Kom bare tilbage når du ser forskellen. Så fortsætter jeg gerne ;)
Avatar billede xas3r Nybegynder
17. oktober 2007 - 22:32 #16
:D... Jeg er igang.. jeg har jo fået en opgave.
Avatar billede xas3r Nybegynder
17. oktober 2007 - 22:33 #17
lol.. jeg fatter f.eks. ikke det her point system..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester