それで、私はミラーを調べました、そしてそれらはオプションかもしれません、しかしそれらの非同期性を考えると、それらは本当に使いにくいか、あるいは単に長期的には実行可能ではないかもしれません。それらは現在サポートされていないので(単なる遊び道具)、とにかく現時点では実際には実行可能ではありません。
質問:一連の文字列が与えられた場合、たとえば。[ "Foo", "Bar" ]
基本クラスApplication
とWidget
in、library corelib;
および各文字列の対応するクラスFooWidget
、BarWidget
inは、文字列を対応するクラスのインスタンスに変換するlibrary applibrary;
ための現在最も洗練されたメソッドであり、dart2jsで機能します。Application
明確にするための同等のPHP疑似例、
<?php # example
namespace corelib;
class Widget {
function name() {
return \get_called_class();
}
}
class Application {
static function resolve($name, $library) {
$class = $library.'\\'.$name.'Widget';
return new $class;
}
}
namespace applibrary;
class FooWidget extends \corelib\Widget {
// ...
}
class BarWidget extends \corelib\Widget {
// ...
}
$foowidget = \corelib\Application::resolve('Foo', 'applibrary');
$barwidget = \corelib\Application::resolve('Bar', 'applibrary');
echo "{$foowidget->name()} <br> {$barwidget->name()}";
出力
applibrary\FooWidget
applibrary\BarWidget