gpt4 book ai didi

php - ZF2 : Dependency Injection, MVC、配置和 Bootstrap

转载 作者:可可西里 更新时间:2023-11-01 12:51:46 28 4
gpt4 key购买 nike

我有一个关于 Zend Framework 2 的问题:

我有图书馆/系统和图书馆/Zend。该系统是我的自定义库,我想配置应用程序(路由、模块等,并将用户重定向到正确的模块、 Controller 和/或操作)。

我不想在每个 application/modules/ModuleName/Module.php 文件中执行此操作。因此,我的库/系统可以完成与应用程序配置相关的所有事情。

最佳答案

正如上面的评论所说:注册到引导事件并在那里添加新路由:

<?php

namespace Application;

use Zend\Module\Manager,
Zend\EventManager\StaticEventManager;

class Module
{
public function init(Manager $moduleManager)
{
$events = StaticEventManager::getInstance();
$events->attach('bootstrap', 'bootstrap', array($this, 'initCustom'), 100);
}

public function initCustom($e)
{
$app = $e->getParam('application');
$r = \Zend\Mvc\Router\Http\Segment::factory(array(
'route' => '/test',
'defaults' => array(
'controller' => 'test'
)
)
);
$app->getRouter()->addRoute('test',$r);
}
}

$app = $e->getParam('application'); 返回一个 Zend\Mvc\Application 实例。看看那里你可以得到哪些额外的部分。 bootstrap 事件在实际调度发生之前触发。

请注意 ZendFramework 1 路由并不总是与 ZendFramework 2 兼容。

评论更新

public function initCustom($e)
{
$app = $e->getParam('application');
// Init a new router object and add your own routes only
$app->setRouter($newRouter);
}

更新到新问题

<?php

namespace Application;

use Zend\Module\Manager,
Zend\EventManager\StaticEventManager;

class Module
{
public function init(Manager $moduleManager)
{
$events = StaticEventManager::getInstance();
$events->attach('bootstrap', 'bootstrap', array($this, 'initCustom'), 100);
}

public function initCustom($e)
{
$zendApplication = $e->getParam('application');
$customApplication = new System\Application();
$customApplication->initRoutes($zendApplication->getRouter());
// ... other init stuff of your custom application
}
}

这只发生在一个 zf2 模块中(名为Application,它也可以是唯一的一个)。这不符合您的需求?你可以:

  • 扩展自定义 module autoloader
  • 为你自己的逻辑扩展 Zend\Mvc\Application
  • 让你的代码与 zf2 兼容

关于php - ZF2 : Dependency Injection, MVC、配置和 Bootstrap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com