Zend framework2 ZF2使用composer自动加载自定义模块
我正在尝试设置一个ZF2项目(与zf2skeleton稍有不同),我希望使用composer来处理所有自动加载,不仅是从供应商的(通过composer安装的)自动加载,还包括我创建的那些模块 由于某些原因,我无法访问我的应用程序模块索引控制器。我认为是自动加载不起作用。。。我只是不知道我可能做错了什么 谢谢 下面的文件和数据: 这是我的文件夹结构:Zend framework2 ZF2使用composer自动加载自定义模块,zend-framework2,composer-php,autoloader,Zend Framework2,Composer Php,Autoloader,我正在尝试设置一个ZF2项目(与zf2skeleton稍有不同),我希望使用composer来处理所有自动加载,不仅是从供应商的(通过composer安装的)自动加载,还包括我创建的那些模块 由于某些原因,我无法访问我的应用程序模块索引控制器。我认为是自动加载不起作用。。。我只是不知道我可能做错了什么 谢谢 下面的文件和数据: 这是我的文件夹结构: index.php private - modules -- Aplication --- src ----- Aplication -------
index.php
private
- modules
-- Aplication
--- src
----- Aplication
------- Controller
---------- IndexController.php
- vendor
-- zendframework
-- composer
-- autoload.php
- composer.json
- composer.phar
main.config.php
return array(
'modules' => array(
'Application',
),
'module_listener_options' => array(
'config_glob_paths' => array(
'private/config/autoload/{,*.}{global,local}.php',
),
'cache_dir' => realpath(dirname(__DIR__) . '/../../data/cache'),
'module_paths' => array(
realpath(__DIR__ . '/../module'),
realpath(__DIR__ . '/../vendor'),
),
),
);
index.php
include_once 'private/vendor/autoload.php';
$application = Zend\Mvc\Application::init(include 'private/config/main.config.php');
return $application;
composer.json
{
"repositories": [
{
"type": "composer",
"url": "http://packages.zendframework.com/"
}
],
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.*"
},
"autoload": {
"psr-0": {
"Application\\": "module/Application/src"
}
}
}
应用程序配置
return array(
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'Application\Controller\Index',
'action' => 'index',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'Application\Controller\Index' => 'Application\Controller\IndexController'
),
),
);
索引控制器
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class IndexController extends AbstractActionController {
public function indexAction() {
die("app ok");
}
}
首先,在我看来,您不运行应用程序:
$application = Zend\Mvc\Application::init(include 'private/config/main.config.php');
$application->run();
另一点是,您不必使用composer来加载模块。由于您的应用程序配置已经包含
模块
目录,模块加载过程将自动扫描该目录,并使用在模块类级别定义的加载策略。可能太明显了,但您确实运行了php composer.phar update
?(如果是,我帮不上忙,如果不是:做!)@Sam是的,我确实运行了update:)但是运气不好……事实上这就是问题所在。但是,为什么不使用composer呢?如果我想保留“更新方法”,但不想将所有内容都转储到供应商文件夹中,该怎么办(这是我的想法。)您的供应商文件夹也标记为模块目录,请参阅配置阵列上的模块路径键