Zum Inhalt springen

PHP Basics: Klassen, Objekte und Instanzierung

Das Verständnis, was eine Klasse und ein Objekt ist setzen wir mal voraus.

Die Klasse darf also ihre Konstanten, Eigenschaften/Attribute (Variablen), und Methoden (Funktionen) haben. Simpelstes Beispiel:

<?php
class MySimpleClass
{
	//Eigenschaften
	public $var = 'Mein Wert';
	
	//Methode
	public function myMethod() {
		echo $this->var;
	}
}
?>

$this: Pseudovariable, Referenz auf das aufrufende Objekt

Erzeugen wir nun eine Instanz (Objekt) einer Klasse:

<?php

$instanz = new MySimpleClass(); //geht im Kontext einer Klasse (s.o.) auch mit new self oder new parent

//natürlich auch mittels Variable
$klasse = 'MySimpleClass';
$instanz = new $klasse();    
?>

Objektzuweisung und Referenzierung – der Unterschied:

<?php

$instanz = new MySimpleClass(); 
$zuweisung = $instanz;
$referenz &= $instanz;

$instanz = null; 

var_dump($instanz);
var_dump($referenz);
var_dump($zuweisung);

//Ausgabe wird sein:
NULL
NULL
object(MySimpleClass)#1 (1) {
  ["var"]=>
  string(9) "Mein Wert"
}
?>

Wenn man also eine bereits erzeugte Instanz ($instanz) einer Klasse einer neuen Variablen ($zuweisung) zuweist, wird die neue Variable auf die selbe Instanz zugreifen wie das Objekt ($instanz), welches zugewiesen wurde. Also bleibt hier $zuweisung unabhängig der Variablen $zuweisung ebstehen, die reine Referenz ($referenz) hingegen nicht.

Weitere Möglichkeit der Instanzierung seit PHP5.3:

<?php
class MySimpleClass
{
    static public function getNew()
    {
        return new static;
    }
}

$obj1 = new MySimpleClass();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);    //bool(true)

$obj3 = SimpleClass::getNew();
var_dump($obj3 instanceof MySimpleClass);    //bool(true)

 

Kommentare sind geschlossen, aber Trackbacks und Pingbacks sind möglich.