Klassen über Konfiguration steuern

// Userklasse verarbeitet 
class User{

	private $conf;

	public function __construct( Conf $conf ){
		$this -> conf = $conf;
	}

	public function get_name(){
		return $this -> conf -> get_name();
	}

}


// Conf-Klasse kann nur ändern was erlaubt ist
class Conf{

	private $name;
	
	public function set_name( $name ){
		$this -> name = $name;
	}

	public function get_name(){
		return $this -> name;
	}

}


// Controller kann referenziell die Eigenschaften der User-Klasse steuern ohne neue Klassen zu erzeugen, ohne neue Instanzen und ohne Neuübermittlung der Konfiguration. 
class Controller{

	public function __construct(){

		// create Name im Conf-Objekt
		$user_data = new Conf();
		$user_data -> set_name( 'Tom' );

		// creater User-Objekt
		$user = new User( $user_data );
		print_r( $user -> get_name() . PHP_EOL );

		// modify Conf-Objekt on user_name 
		$user_data -> set_name( 'Jerry' );
		print_r( $user -> get_name() . PHP_EOL );

	}

}

new Controller;