"Module (User) could not be initialized":Zend Framework 2 中的异常
"Module (User) could not be initialized" : Exception in Zend Framework 2
我已经下载了 Zend Framework 2 的骨架应用程序。然后我正在创建一个名为 "User" 的模块。
文件夹结构;
Module
.....
User
config
module.config.php
src
Controller
UserController.php
Model
User.php
UserTable.php
Form
Module.php
view
index.phtml
...
我在应用程序的 modules.config.php
中添加了 'User'
return [
'Zend\Form',
'Zend\Db',
'Zend\Router',
'Zend\Validator',
'Application',
'User',
];
我的Module.php代码如下;
<?php
namespace User;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface
{
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
public function getServiceConfig()
{
return [
'factories' => [
Model\UserTable::class => function($container) {
$tableGateway = $container->get(Model\UserTableGateway::class);
return new Model\UserTable($tableGateway);
},
Model\UserTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
],
];
}
public function getControllerConfig()
{
return [
'factories' => [
Controller\UserController::class => function($container) {
return new Controller\UserController(
$container->get(Model\UserTable::class)
);
},
],
];
}
}
里面composer.json
"autoload": {
"psr-4": {
"Application\": "module/Application/src/",
"User\": "module/User/src/",
}
},
但我收到错误 "Module (User) could not be initialized"。我是 Zend Framework 的新手。我认为 Module.php 有问题。我尝试了 Whosebug 中的所有答案。其中大部分表示 namespace 问题。但我想我已经给出了正确的。
能否请您指出问题,如果需要更多代码,请提出。
我假设您通过文件夹结构使用 PSR-4
,我没有看到 Module.php
,但它应该在 src
目录中。
此外,请确保您已将模块添加到 composer.json
,与添加 Application
模块的方式相同:
"autoload": {
"psr-4": {
"Application\": "module/Application/src/",
"User\": "module/User/src/",
}
},
然后通过以下方式更新作曲家的自动加载文件:
$ php composer.phar dump-autoload
好的,解决了。问题是 "User\": "module/User/src/" 末尾的逗号 (,),在 composer.json
中
我已经下载了 Zend Framework 2 的骨架应用程序。然后我正在创建一个名为 "User" 的模块。
文件夹结构;
Module
.....
User
config
module.config.php
src
Controller
UserController.php
Model
User.php
UserTable.php
Form
Module.php
view
index.phtml
...
我在应用程序的 modules.config.php
中添加了 'User'return [
'Zend\Form',
'Zend\Db',
'Zend\Router',
'Zend\Validator',
'Application',
'User',
];
我的Module.php代码如下;
<?php
namespace User;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface
{
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
public function getServiceConfig()
{
return [
'factories' => [
Model\UserTable::class => function($container) {
$tableGateway = $container->get(Model\UserTableGateway::class);
return new Model\UserTable($tableGateway);
},
Model\UserTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
],
];
}
public function getControllerConfig()
{
return [
'factories' => [
Controller\UserController::class => function($container) {
return new Controller\UserController(
$container->get(Model\UserTable::class)
);
},
],
];
}
}
里面composer.json
"autoload": {
"psr-4": {
"Application\": "module/Application/src/",
"User\": "module/User/src/",
}
},
但我收到错误 "Module (User) could not be initialized"。我是 Zend Framework 的新手。我认为 Module.php 有问题。我尝试了 Whosebug 中的所有答案。其中大部分表示 namespace 问题。但我想我已经给出了正确的。 能否请您指出问题,如果需要更多代码,请提出。
我假设您通过文件夹结构使用 PSR-4
,我没有看到 Module.php
,但它应该在 src
目录中。
此外,请确保您已将模块添加到 composer.json
,与添加 Application
模块的方式相同:
"autoload": {
"psr-4": {
"Application\": "module/Application/src/",
"User\": "module/User/src/",
}
},
然后通过以下方式更新作曲家的自动加载文件:
$ php composer.phar dump-autoload
好的,解决了。问题是 "User\": "module/User/src/" 末尾的逗号 (,),在 composer.json
中