Bevor ich damit anfange, könntest du dies auch einfach mit einem Online-Codepad-Tool testen, aber ich dachte, es wäre besser, tatsächlich zu erklären, was hier vor sich geht.
Angenommen, du hast diese Klasse, basierend auf dem, was du beschrieben hast:
class MyClass
{
private static $session;
public function __construct($reg)
{
self::$session = $reg->get('session');
}
}
Der Ausdruck self::$session
bezieht sich auf eine Klassenvariable, die unter allen Instanzen von MyClass
geteilt wird.
Ändern wir die Klasse wie folgt:
class MyClass
{
private $session;
public function __construct($reg)
{
$this->session = $reg->get('session');
}
}
Jetzt bezieht sich der Ausdruck $this->session
auf eine Instanz variable, die nicht mit irgendeiner anderen Instanz von MyClass
geteilt wird.
Aufgrund dieses Unterschieds können sie nicht austauschbar verwendet werden, und du musst eine Entscheidung basierend auf deinem funktionalen Design treffen.