Creating default object from empty value bei der Verwendung von chained Properties

Erstellt man in PHP eine neue Instanz der vordefinierten Klasse StdClass, so können dieser anschließend beliebige Eigenschaften zugewiesen werden:

$test = new StdClass();
$test->property = 1;

Versucht man allerdings mehrere Eigenschaften ohne vorherige (Teil-)Initialisierung zu verketten, wird dies von PHP mit einer entsprechenden Warnung kommentiert:

$test->anotherproperty->propertytoo = 7;

Warning: Creating default object from empty value in ... on line ..

Um diese Warnung zu vermeiden (und richtig zu initialisieren), kann eine kleine Erweiterung der Klasse StdClass vorgenommen werden, welche beim Zugriff auf jede Eigenschaft prüft, ob diese bereits existiert und ggf. das Anlegen der Instanz nachholt:

class myData extends StdClass {

	public function __get($name) {
		if (!isset($this->{$name})) {
			$this->{$name} = new myData();
		}
		return $this->{$name};
	}
}

Anschließend können in Instanzen dieser Klasse beliebige verkettete Eigenschaften definiert werden, ohne daß PHP eine Warnung ausspuckt:

$test = new myData();
$test->property = 5;
$test->anotherproperty->property = 7;

Die neue Klasse hat keine Nachteile bzg. der Verwendung gegenüber der unmodifizierten Klasse „StdClass“, auch Funktionen wie z.B. „json_encode()“ funktionieren weiter problemlos.

 

NVIDIA Telemetrie-Dienste unter Windows 7

Bei der Aktualisierung des NVIDIA-Treibers auf die aktuelle Version „388.31-desktop-win8-win7-64bit-international-whql“ blitzte, obwohl lediglich die Treiber aus- und GeForce Experience und NVIDIA 3D Vision als Installationsoptionen abgewählt wurden, kurz der Hinweis auf, daß ungefragt irgendwelche NVIDIA Telemetrie-Dienste installiert wurden.

Ein Blick in die aktuell laufenden Prozesse zeigte einen entsprechenden Dienst, der sich in der Diensteverwaltung aber problemlos beenden und deaktivieren ließ.

Eine Recherche im Internet brachte die Erkenntnis, daß die Sammlung von Telemetriedaten neuerdings wohl Teil des Treibers ist und nicht wie früher Teil der Experience. Die im Tool „Disable Nvidia Telemetry“ angegebenen Tasks wurden bei der Installation aber nicht eingeplant.

 

Summer is coming

Die Winds of Winter werden wohl nochmal verschoben …

 

Lesenswert XVII

 

IKEA Ersatzteilservice

Letztes Wochenende beim Umbau eines Stolmen-Regals festgestellt, daß ein paar Schrauben leider nicht mehr auffindbar sind.

Abends das Ersatzteilformular von IKEA ausgefüllt, nach ein paar Minuten die automatische Bestätigung und heute, drei Tage nach der Bestellung, sind die benötigten Schrauben als kostenlose Ersatzlieferung im heimischen Briefkasten gelandet.

Kein Vergleich zum „Service“ eines Mitbewerbers, bei dem im Originalpaket fehlende Schrauben und Scharniere nur nach unzähligen Telefonaten nach Wochen nachgeliefert wurden.