Den søndag den 3. februar 2013 21.21.42 UTC+1 skrev Bertel Lund Hansen:
> Jens R. Rasmussen skrev:
>
>
>
> > Men jeg forstår ikke hvad "->" betyder, og jeg kan ikke finde
>
> > en forklaret i manualen på
php.net. Så hvad gør denne
>
> > operator?
>
>
>
> En klasse er en samling elementer. Den kan omfatte både variable
>
> og funktioner. Klassen har et navn.
>
>
>
> Når man så skal bruge klassen, opretter man et objekt. Du kan
>
> tænke på klassedefinitionen som en slags opskrift, og så laves
>
> objektet efter den opskrift. Ved oprettelsen tildeler man
>
> objektet et navn.
>
>
>
> Når man så skal tilgå elmenterne i objektet, så bruger
>
> [objektnavn] + [->] + [elementnavn]. Et eksempel:
>
>
>
> class Cat () {
>
> var $name
>
> var $sex
>
> var $colour
>
> var $age
>
> var $position
>
>
>
> function Cat ($nm,$sx,$cl) {
>
> $this->name=$nm);
>
> $this->sex=$sx);
>
> $this->colour=$cl);
>
> $this-age=0;
>
> $this-position=array(0,0,0);
>
> }
>
>
>
> function move ($steps,$direction) {
>
> kode til bevægelse ...
>
> }
>
>
>
> function jump ($height,$length,$direction) {
>
> kode til spring ...
>
> }
>
> function display_position () {
>
> foreach ($this-position as $val) echo $val.' ';
>
> }
>
>
>
> }
>
>
>
> Nu kan vi så oprette et objekt:
>
>
>
> $mis=Cat('Missi',0,'black');
>
> På det her tidspunkt er objektet $mis oprettet, og det får så
>
> automatisk et sæt variable og et sæt funktioner. Når de skal
>
> bruges, skal vi specificere objektets navn (der kan jo være mange
>
> objekter af den samme klasse), og vi skal specificere varablen
>
> eller funktionen:
>
>
>
> $mis->move(5,'nord');
>
> $mis->jump(100,30,'syd');
>
> $mis->display_position();
>
> osv.
>
>
>
> Læg mærke til at man inden i definitionen af klasse jo ikke ved
>
> hvad objektet (eller objekterne) kommer til at hedde. Det
>
> fastlægges først når de oprettes. Derfor bruger man "$this" som
>
> generisk betegnelse, og den får man brug for når man i
>
> funktionerne skal henvise til klassens egne elementer.
>
>
>
> Hvis jeg i stedet for "$this-position" blot havde skrevet
>
> "$position", ville systemet have ledt efter en global variabel
>
> der hed "$position" og den findes ikke - eller endnu værre: Den
>
> findes og giver nogle helt andre resultater end det er meningen!
>
> Kun ved at bruge $this-> fortæller jeg systemet at det er
Tak Bertel for din meget forståelige forklaring. Den burde stå forrest i manualen :-).
Min forvirring skyldes, at jeg intuitivt (og forkert) opfattede A->B som en handling, der flyttede værdier fra A til B. Jeg så ikke, at B er et element i A, og at A->B derfor er en adresse på element B i A
mvh.
/Jens