Sichtbarkeiten

Sichtbarkeiten private / protected und public

Ein Thema über das ich mich bisher ausgeschwiegen habe, sind die Schlüsselwörter „private, protected und public“ die vor den Attributen und Methoden stehen.

Diese Attribute steuren die „Sichbarkeit“ nach „Aussen“ und nach "innen" :)

Public

Ein Attribut, dass die Eigenschaft „public“ hat. Kann auch ausserhalb des Objektes verändert werden (das möchte man nur selten).


Beispiel:

<?php
	class Car {
		public $vendor;
	}

	$vwLupo = new Car();
	$vwLupo->vendor = 'VW';
?>

Durch dieses Beispiel wird dem Auto der Hersteller VW zugewiesen. Dadurch spart man zwar die Implementierung der „set“ Methode, hat aber keine Kontrolle mehr darüber welche Werte dem Attribut vendor zugewiesen werden.

Auf ein public Attribut oder eine Methode kann von überall in einer Anwendung schreiben zugegriffen werden. Dadurch lässt sich dieses Attribut oder die Methode nicht mehr so einfach ändern, da alle Stellen im Code angepasst werden müssen die dieses Attribut / Methode verwenden.

Die Empfehlung ist hier:

  1. Alle Attribute des Objekts sollten private oder protected sein.

  2. Veränderungen von Attributen sollten immer mit einer public „set*“ Methode durchgeführt werden, da man dann konstrollieren kann von wo Änderungen am Objekt stattfinden.

Protected

Wenn ein Attribut oder eine Methode als protected deklariert wurde ist sie nicht ausserhalb des Objekts änderbar. Es kann jedoch innerhalb der Vererbungshierarchie eines Objektes kann darauf zugegriffen werden.

Private

Die strengste Sichtbarkeit ist „private“ eine Methode oder ein Attribute, dass als „private“ definiert wurde kann nur innerhalb des Objektes gelesen und verändert werden.

Was haben diese Sichtbarkeiten für einen Sinn?

Bei großen Projekten arbeitet man oft mit mehreren Entwicklern am Quellcode. Viele Entwickler arbeiten an unterschiedlichen Klassen. Damit später aber alles zusammen funktioniert, muss die Schnittstelle der Klasse festgelegt werden. Ein anderer Entwickler muss also die öffentlichen Methoden kennen und ist auch an dessen Verwendung gebunden.

Als Entickler einer oder mehrerer Klassen kann man den Code in einer Klasse einfach ändern, solang die Rückgabe der öffentlichen Methoden sich nicht verändert.

Navigation