Я бы посоветовал вам загрузить SkeletonApplication , настроенный для целей обучения.Это ясно иллюстрирует и объясняет различные значения по умолчанию в конфигурации.По умолчанию application.config.php
здесь
В этой конфигурации по умолчанию вы найдете следующее:
// Retrieve list of modules used in this application.
'modules' => require __DIR__ . '/modules.config.php',
Таким образом, у вас есть отдельный modules.config.php
рядом с application.config.php
чтобы отделить эти проблемы.По умолчанию это выглядит так:
<?php
/**
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/**
* List of enabled modules for this application.
*
* This should be an array of module namespaces used in the application.
*/
return [
'Zend\Router',
'Zend\Validator',
'Application',
];
Хотя после запуска composer install
здесь будет добавлено больше слов.
В единственном модуле Skeleton (Application
) вы также найдете Module.php
в папке src/
.Здесь конфигурация модуля загружается из / by.
Здесь я бы порекомендовал вам начать немного отклоняться от настроек по умолчанию, создав собственный класс AbstractModule где-нибудь в универсальном модуле (MVC?).Я рекомендую это, чтобы минимизировать количество дублирующегося кода, так как большинство модулей не будут иметь больше, чем просто «вот конфиг, делай свое дело», как по умолчанию, приведенное выше.
Мои собственные Module.php
классы выглядяткак это:
class Module extends AbstractModule
{
public function __construct()
{
parent::__construct(__DIR__, __NAMESPACE__);
}
}
И AbstractModule
это:
abstract class AbstractModule implements ConfigProviderInterface, AutoloaderProviderInterface
{
/**
* @var String Path of current module
*/
protected $path;
/**
* @var String Namespace of current module
*/
protected $namespace;
/**
* This is to be called by descendant classes with:
* parent::__construct(__DIR__, __NAMESPACE__)
*
* @param $path string Module path
* @param $namespace string Module namespace
*/
public function __construct($path, $namespace)
{
$this->path = $path;
$this->namespace = $namespace;
}
/**
* @return array
*/
public function getConfig()
{
$config = [];
$path = $this->path
. DIRECTORY_SEPARATOR . '..'
. DIRECTORY_SEPARATOR . 'config'
. DIRECTORY_SEPARATOR . '*.php';
foreach (glob($path) as $filename) {
$config = array_merge_recursive($config, include $filename);
}
return $config;
}
/**
* @return array
*/
public function getAutoloaderConfig()
{
return [
'Zend\Loader\StandardAutoloader' => [
'namespaces' => [
$this->namespace => $this->path . DIRECTORY_SEPARATOR . 'src',
],
],
];
}
}
Эта установка все равно позволит вам изменить Module.php
определенного модуля, и это в общем случаеспособ, которым вам нужно только, чтобы __construct
функционировал дочерние классы, если вам больше ничего не нужно делать.
Обратите внимание, что эта установка принимает любые файлы .php
в папке config/
.Таким образом, вы можете разработать свои собственные пакеты для включения в файлы конфигурации по умолчанию .dist
и по-прежнему использовать этот класс.