我有一个Base
类,它有一些基本功能和一些辅助方法。我想从这个类扩展不同的方法,超过10.所以我会class Foo extends Base
和class Bar extends Base
等等。现在,就调用此方法而言,应用程序仅根据环境运行其中一个扩展,因此例如在生成new Foo()
时调用并在开发时new Bar()
被调用。
我对这些有一些基本的功能,但我担心它不会扩展和/或它不是最好的做事方式。我有一个名为CLASS_LOAD='bar'
的ENV变量。这是我的代码以及我到目前为止的工作方式:
class Base {
//
}
class Foo extends Base {
//
}
class Bar extends Base {
//
}
class ClassLoader {
public static function init() {
switch (getenv('CLASS_LOAD')) {
case 'bar':
return new Bar();
case 'foo':
return new Foo();
default:
throw new Exception();
}
}
}
我在我的应用程序中调用它的方式是:
$class = ClassLoader::init();
现在我的工作正常,但我每次添加Base类的新扩展时都必须不断更新ClassLoader类。并且可能在将来,switch-case语句将变得无法忍受。
我可以做别的吗? 有什么想法吗?
由于
答案 0 :(得分:0)
我认为您应该尝试这种方法,不再需要切换语句,您不必再恐慌。
class ClassLoader{
public static function init() {
$class = getenv('CLASS_LOAD');
if(class_exsists($class))
return new $class;
else
throw new Exception("class not found");
}
}
现在打电话。