Klass

Vi skapar en egen klass och instansierar ett objekt av klassen.

Spara koden du skriver i denna övningen i index_person1.php. Klassfilen sparar du i src/Person1.php.

#En egen klass

Vi återskapar samma klass vi hade nyss, men nu i en egen klass som du sparar i filen src/Person1.php. Vi använder stora bokstäver på filer som innehåller klasser, det är ett val vi gör för att vara tydliga och en kodstandard vi valt att följa.

class Person1
{
    public $name;
    public $age;

    public function details() {
        return "My name is {$this->name} and I am {$this->age} years old.";
    }
}

I vårt main-program index_person1.php behöver vi nu inkludera klass-filen. Sedan kan vi skapa ett objekt av klassen, lägga till värden i objektet och anropa metoden details().

Funktioner som ligger som medlemmar i en klass brukar vi omtala som metoder.

Properties som ligger i klassen brukar vi även kalla medlemsvariabler.

$object = new Person1();
$object->age = 42;
$object->name = "MegaMic";

echo $object->details();
var_dump($object);

Så här kan det se ut när du kör programmet.

Detaljer om objektet skrivs ut.

Detaljer om objektet skrivs ut.

#Det egna objektet, $this

Variabeln $this är en referens till nuvarande objekt och används i klassens metoder för att referera det objekt som anropar metoden.

Utanför objektet så kan en metod anropas så här, det är en kombination av objektet och dess metod.

$object->details();

Inuti metoden så används $this för att referera till det objekt som anropade metoden, i detta fallet $object.

/**
 * Print out details on the person.
 *
 * @returns string with details on person.
 */
public function details() {
    return "My name is {$this->name} and I am {$this->age} years old.";
}

Så, i detta fallet så är alltså $this samma sak som $object. Klassens metoder innehåller generell kod som fungerar för alla objekt av klassen och $this är sättet att referera till det anropande objektet, instansen av klassen, och dess specifika medlemsvariabler.

För att komma åt medlemsvariabeln $age så skriver du $this->age i din metod.

I mitt exempel ovan används {} för att omringa variabeln inuti textsträngen, det är för att variabeln skall kunna parsas inom ramen för textsträngen.

#Revision history

  • 2018-03-13: (A, mos) Första versionen, uppdelad av större dokument.

Document source.