Example #1
0
    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());
}
Example #2
0
    {
    }
}
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());
}