简述
在本章中,我们将学习如何在Zend框架中创建基于MVC的模块。让我们创建一个名为“Tutorial”的模块来了解模块创建过程。
-
在 –myapp/module/Tutorial/src/ 目录中创建一个名为Module 的新 PHP 类,并实现“ConfigProviderInterface”。
-
将Tutorial设置为Module类的命名空间。
-
在Module类中编写一个公共函数 getConfig,并返回Tutorial模块的配置文件。
Module类的完整代码如下 :
<?php
namespace Tutorial;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface {
public function getConfig() {
return include __DIR__ . '/../config/module.config.php';
}
}
使用以下代码在autoload部分下的 composer.json 中配置Tutorial模块。
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/",
"Tutorial\\": "module/Tutorial/src/"
}
}
使用 composer update 命令更新应用程序,如下所示。
composer 命令将对应用程序进行必要的更改,并在命令提示符下显示日志,如下所示 −
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing zendframework/zend-component-installer (0.3.0)
- Installing zendframework/zend-component-installer (0.3.1)
Downloading: 100%
- Removing zendframework/zend-stdlib (3.0.1)
- Installing zendframework/zend-stdlib (3.1.0)
Loading from cache
- Removing zendframework/zend-eventmanager (3.0.1)
- Installing zendframework/zend-eventmanager (3.1.0)
Downloading: 100%
- Removing zendframework/zend-view (2.8.0)
- Installing zendframework/zend-view (2.8.1)
Loading from cache
- Removing zendframework/zend-servicemanager (3.1.0)
- Installing zendframework/zend-servicemanager (3.2.0)
Downloading: 100%
- Removing zendframework/zend-escaper (2.5.1)
- Installing zendframework/zend-escaper (2.5.2)
Loading from cache
- Removing zendframework/zend-http (2.5.4)
- Installing zendframework/zend-http (2.5.5)
Loading from cache
- Removing zendframework/zend-mvc (3.0.1)
- Installing zendframework/zend-mvc (3.0.4)
Downloading: 100%
- Removing phpunit/phpunit (5.7.4)
- Installing phpunit/phpunit (5.7.5)
Downloading: 100%
Writing lock file
Generating autoload files
使用以下代码在 /config/ 处创建模块配置文件“module.config.php” -
<?php
namespace Tutorial;
use Zend\ServiceManager\Factory\InvokableFactory;
use Zend\Router\Http\Segment;
return [
'controllers' => [
'factories' => [Controller\TutorialController::class => InvokableFactory::class,],
],
'view_manager' => [
'template_path_stack' => ['tutorial' => __DIR__ . '/../view',],
],
];
配置文件有三个部分,它们如下所示 −
在应用程序级配置文件中配置Tutorial模块 – myapp/config/modules.config.php。
return ['Zend\Router', 'Zend\Validator', 'Application', 'Tutorial'];
通过在应用程序文件夹的根目录下执行编辑器服务来运行应用程序。
我们已经成功添加了一个新模块,但仍需要添加控制器、路由和视图才能成功运行Tutorial模块。