提问者:小点点

如何修复安装/升级较新的zend框架?


从composer安装中,我得到了比旧Zend/Libeary更新的版本,但得到了以下错误:致命错误:未捕获Zend\ServiceManager\Exception\ServiceNotFoundException:无法将服务“路由器”解析到工厂;您确定在配置过程中提供了它吗?在/home/azureuser/nginad/upload/vendor/zendframework/zend servicemanager/src/servicemanager中。php:687堆栈跟踪:#0/home/azureuser/nginad/upload/vendor/zendframework/zend servicemanager/src/servicemanager。php(763):Zend\ServiceManager\ServiceManager-

安装屏幕。。。

这是它安装在公用文件夹下的文件夹

   Vendor
      Zendframework
          Zend-Mvc
              src
    ...

如何将路由器添加到配置中?下面是我安装的:


共2个答案

匿名用户

我无法清楚地理解您的查询,但如果您正在努力添加路由,则可以在模块中添加路由。配置。php如下所示

<?php
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

return [
    'router' => [
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route'    => '/',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application[/:action]',
                    'defaults' => [
                        'controller'    => Controller\IndexController::class,
                        'action'        => 'index',
                    ],
                ],
            ],
        ],
    ],

  //...
];

匿名用户

Zend Skeleton应用程序包含此编写器。json在其根项目文件夹中。您可以看到,它需要某些模块,包括一个用于安装的模块。您还可以看到自动加载。现在,每个要加载/需要的模块都可以执行相同的操作,从而创建一个附加composer的结构。json文件和需求。在链接文件中,您会看到需要zendframework/zend mvc“zendframework/zend mvc”:“^3.0.1”,

然后看看zendframework/zend form的作曲家。json文件。您将看到添加的需要键和版本以及附加的自动加载键。所有这些(甚至更多)组合在一起,创建一个可安装的包。该软件包是您的完整安装,安装后,您的供应商/映射中的所有内容都位于项目的根composer.json文件旁边。

下面我有一个作曲家的略作修改的屏幕截图(删除了一些和问题无关的内容并突出显示了其他内容)。当前项目的json。

在左侧您可以看到文件夹结构。在底部您可以看到文件composer.jsoncomposer.lock

. json(中间屏幕)包含项目的根需求。由于每个包可能都有自己的需求,所以在安装过程中会生成composer.lock(右侧的文件)。该文件包含每个安装的版本。(创建使用作曲家安装命令)。

正如您在中看到的那样。锁定文件,在某个地方需要包51systems/doctor encrypt。正如您在这里看到的,该包有自己的需求和要加载的名称空间。

现在,Composer安装过程也会创建自动加载。

Zend Framework在应用程序本身中启动自动加载,但它使用供应商/自动加载中包含的文件。php文件。下面是公共/索引的一部分。php,与自动加载相关。要了解全部内容,请安装框架或查看Github。

// Composer autoloading
include __DIR__ . '/../vendor/autoload.php';

// ... other stuff

// Run the application!
Application::init($appConfig)->run();

好的,这表明我们包括供应商/自动加载。php。让我们看看:

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit7befb6b36ba61da7e01a592b255158ab::getLoader();

六羟甲基三聚氰胺六甲醚。。。是的,这就是整个文件。不多。然而,我们也可以遵循这一点。

vendor文件夹中,您将找到一个名为composer的文件夹。在这里,您将看到几个以自动加载开头的文件,这些文件确保每个文件都通过那些编写器注册。json文件(配置PSR-0PSR-4中的键自动加载)已加载。

因此,包括供应商/自动加载。php确实足够了。单击它们并查看。

接下来使用名称空间来使用其他类。你问了这个问题,但是考虑到这个问题的范围,你应该把它作为一个单独的问题。另外,请阅读我在评论中向您发送的名称空间链接。

下面的讨论已失控,因此请分步骤执行以下操作:

  1. 确保你有一个主机设置(在:Ubuntu(Apache)、Windows 10(Apache)、Mac(Apache)、Ubuntu(nginx)、Windows 10(nginx)、Mac(nginx))上(暂时让它成为一个空文件夹,称它为“skeleton”,主机名为“skeleton.loc”)
  2. 下载Zend Skeleton应用程序(direct.zip链接)
  3. 在步骤1(“骨架”)的新文件夹中解压缩
  4. 在终端会话中打开主机文件夹“骨架”
  5. 运行composer安装(从“骨架”终端会话)(您想在安装过程中为所有选项“注入module.config.php(这次不挑剔),这就是选项1(每次))
  6. 等待安装运行
  7. 访问“skeleton.loc”(可能是规范的:http://skeleton.loc/)在浏览器中,您应该看到下图(但对于ZF3;),(从互联网上撕下)