Как настроить application.config.php

Я использую Zf2, каким-то образом клонированный zf3, application.config.php по-прежнему zf2, в котором настроены мои модули, но он вызвал исключение из-за невозможности найти маршрут из ServiceManager.

Как добавить конфигурацию модулей в мое приложение? Конфигурация двух приложений различна.

Спасибо,
W.

Можете ли вы поделиться своим "application.config.php", а также исключениями

Gautam Rai 27.09.2018 15:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
1 099
2

Ответы 2

application.config.php должен описывать все модули, необходимые системе. Например:

return [
    'modules' => [
    'Application',
    'Module1',
    'Module2',
    ],
    'module_listener_options' => [
    'config_glob_paths' => [
        'config/autoload/{,*.}{global,local}.php'
    ],
    'config_cache_enabled' => false,
    'cache_dir' => 'data/cache',
    'module_paths' => [
        './module',
        './vendor'
    ]
    ],
    'service_manager' => [
    'use_defaults' => true,
    'factories' => []
    ]
];

Затем ZF будет читать каждый файл модуля Module.php и загружать соответствующие файлы конфигурации, используя метод getConfig().

По умолчанию:

public function getConfig()
{
    return include __DIR__ . '/config/module.config.php';
}

Например, вы можете:

public function getConfig()
{
    $user = include __DIR__ . '/config/user.config.php';
    $group = include __DIR__ . '/config/group.config.php';
    $account = include __DIR__ . '/config/module.config.php';
    return array_merge_recursive($user, $group, $account);
}

Конфигурация приложения не использует формат, как после его нахождения: github.com/nginadofficial/nginad/blob/master/upload/confi‌ g /… @michaelbn

Weilin 27.09.2018 17:26

Я предлагаю вам загрузить СкелетПрименение, который настроен для учебных целей. Он ясно иллюстрирует и объясняет различные значения по умолчанию в конфигурации. По умолчанию 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 сюда вроде бы добавится больше.

В единственном модуле скелета (Application) вы также найдете Module.php в папке src/. Это то место, откуда загружается конфигурация модуля.

Здесь я бы порекомендовал вам начать немного отклоняться от настройки по умолчанию, создав где-нибудь свой собственный класс 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 по умолчанию и по-прежнему использовать этот класс.

Другие вопросы по теме