Inkapsling (private)

Vi ser hur begreppet inkapsling kan begränsa användandet av objektet och ge möjlighet att uppdatera klassens implementation, utan att störa main-programmet. Vi får ett API till vår klass.

Spara koden du skriver i denna övningen i index_person2.php och klassfilen i src/Person2.php.

#Inkapsling av medlemsvariabler

Ta en kopia av src/Person1.php och spara som src/Person2.php, inklusive dina docblocks.

Uppdatera så att klassens medlemsvariabler är private istället för public. Metoden kan fortsätta vara publik.

class Person2
{
    private $name;
    private $age;

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

Ta nu och kopiera index_person1.php till index_person2.php och uppdatera så att klassen Person2används.

Kör programmet, vad händer? Kan du gissa hur private kommer att påverka din kod?

Medlemsvariablerna är nu privata och kan inte nås från main-programmet utifrån klassen.

Medlemsvariablerna är nu privata och kan inte nås från main-programmet utifrån klassen.

Vi kommer nu inte åt de privata delarna i objektet. I klassen har vi sagt vilka delar som är private.

Du kan ha både medlemsvariabler och metoder som privata. Det som du inte vill att en utomstående skall pilla i, det deklarerar du som private och du får möjligheten att senare ändra din implementation, utan att störa de som använder din klass.

#Revision history

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

Document source.