public function auto() { $return = $this; $this->loadPropertyTypes(); $properties = AutoBuild::getDefaultParameters($this->className); // Set the default values if (!empty($properties)) { foreach ($properties as $propName => $value) { $return = $this->with($value, is_numeric($propName) ? null : $propName); } } // Build consequent dependancies that are already registered if (!empty($this->propertyTypes)) { foreach ($this->propertyTypes as $name => $class) { if (!empty($this->params[$name])) { continue; } $object = AutoBuild::getInstance($class); if (!empty($object)) { $return = $this->with($object, $name); } } } return $return; }
public function getHost() { return $this->host; } } class Model { use \FW\DI\DI; protected $connection = DBConnection::class; protected $table; public function __construct($connection) { } public function getHost() { return $this->connection->getHost(); } } class Model_Post extends Model { protected $table = 'table'; } \FW\DI\AutoBuild::register(Dependancy::class, []); \FW\DI\AutoBuild::register(DBConnection::class, ['host' => 'localhost']); // $dependancy will be autoloaded since it's registered already try { $post = Model_Post::build()->auto(); var_dump($post->getHost()); } catch (Exception $e) { var_dump($e->getMessage()); }
public function getHost() { return $this->host; } } class Model { use \FW\DI\DI; protected $connection = DBConnection::class; protected $table; public function __construct($connection) { } public function getHost() { return $this->connection->getHost(); } } class Model_Post extends Model { protected $table = 'table'; } \FW\DI\AutoBuild::register(DBConnection::class, function () { return ['host' => 'localhost']; }); try { $post = Model_Post::build()->auto(); var_dump($post->getHost()); } catch (Exception $e) { var_dump($e->getMessage()); }