protected $user; protected $password; public function __construct($host) { } } class DBExtend extends DBConnection { } class Model { use \FW\DI\DI; protected $connection = DBExtend::class; protected $table; public function __construct($connection) { } public function hello() { return 'hello'; } } $model = Model::build()->with(DBExtend::build()->with('localhost', 'host')); echo $model->hello() . "\n"; try { $model = Model::build()->with(DBConnection::build()->with('localhost', 'host')); // This will fail echo $model->hello() . "\n"; } catch (Exception $e) { var_dump($e->getMessage()); }
{ } } class DBConnection { use \FW\DI\DI; public $host; public function __construct($host) { } } class Model { use \FW\DI\DI; public $connection = DBConnection::class; public $dependancy = Dependancy::class; public function __construct($connection, $dependancy) { } } \FW\DI\AutoBuild::register(Dependancy::class, ['name' => 'AutoName']); \FW\DI\AutoBuild::register(DBConnection::class, ['host' => 'localhost']); // $dependancy will be autoloaded since it's registered already try { $post = Model::build()->auto(); var_dump($post->connection->host); $overridenPost = Model::build()->with(DBConnection::build()->with('127.0.0.1', 'host'), 'connection')->auto(); var_dump($overridenPost->connection->host); } catch (Exception $e) { var_dump($e->getMessage()); }