在我的项目中,我正在处理数据并处理结果。有一个抽象类,如下所示:
class AbstractInterpreter
{
public function interprete( $data )
{
throw new Exception('Abstract Parent, nothing implemented here');
}
}
然后有各种不同的实现AbstractInterpreter
:
class FooInterpreter extends AbstractInterpreter
{
public function interprete( $data )
{
return "resultFoo";
}
}
class BarInterpreter extends AbstractInterpreter
{
public function interprete( $data )
{
return "resultBar";
}
}
我的调用代码创建解释器并收集结果:
//this is the data we're working with
$data = "AnyData";
//create the interpreters
$interpreters = array();
$foo = new FooInterpreter();
$bar = new BarInterpreter();
$interpreters[] = $foo;
$interpreters[] = $bar;
//collect the results
$results = array();
foreach ($interpreters as $currentInterpreter)
{
$results[] = $currentInterpreter->interprete($data);
}
我目前正在创建越来越多的解释器,代码变得混乱......对于每个解释器,我需要添加一个特定的include_once(..)
,我必须实例化它并将其放入$interpreters
.
现在,最后问我的问题:
是否可以自动包含和实例化特定目录中的所有解释器并将它们放入$interpreters
?
在其他语言中,这将是某种插件概念:
我创建不同的实现AbstractInterpreter
,将它们放在特定的子目录中,软件会自动使用它们。一旦完成,我就不必修改加载解释器的代码。