Klassen als Typen ( string, int, float, bool, array, object ... ) , Methoden casten

Möglichkeiten von PHP Objektinstanzen zurückzugeben. Beispiel:

<?php
class Test{

	private $val;

	public function __construct( $val = null ){
		$this -> val = $val;
	}

	# Magische Methode steuert Funktioncall auf Objektinstanz
	public function __invoke(){
		return $this;
	}

	# Magische Methode steuert automatische Typenkonvertierung nach String
	public function __toString(){
		return 'Testausgabe!';
	}
}

# Klasse als Funktion ausgeben
print_r(
	( new Test( ['assoc'=> 'foo'] ) )(  )
);

# Klasse als String ausgeben
print_r( 
	new Test() . PHP_EOL
);