DRY Module.php有标准方法吗?我有几个像这样的简单Module.php文件
<?php
namespace SolImporter;
class Module
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
}
只有名称空间不同,当然PHPCPD会对此抱怨。
答案 0 :(得分:1)
你可以这样做。但是,您创建了另一个依赖项,而该模块并不真正需要它。而且,如果没有反思,你就无法得到你孩子的__DIR__
。反射可能会损害您的性能,特别是如果您将它用于每个模块类(并且每个模块类按照其原则在每个请求中加载)。
但在这里:
namespace MyCommon\Module;
class AbstractModule
{
public function getAutoloaderConfig()
{
$dir = $this->getDir();
$namespace = $this->getNamespace();
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
$namespace => $dir . '/src/' . $namespace,
),
),
);
}
public function getConfig()
{
$dir = $this->getDir();
return include $dir . '/config/module.config.php';
}
protected function getDir()
{
$reflection = new ReflectionClass($this);
return dirname($reflection->getFileName());
}
protected function getNamespace()
{
return str_replace('\Module', '', get_class($this));
}
}
使用它像:
namespace MyModule;
use MyCommon\Module\AbstractModule;
class Module extends AbstractModule
{
}