Php 创建没有控制器的zf2模块,其中包含一些自动加载的类

Php 创建没有控制器的zf2模块,其中包含一些自动加载的类,php,zend-framework2,zend-loader,Php,Zend Framework2,Zend Loader,我正在尝试创建一个Zend Framework 2模块,其中包含一些我想在一些控制器中使用的泛型类 我在“vendor”目录中创建了一个名为“tux-drink-zf2-module”的目录 我将该目录添加到“application.config.php”中 my Module.php具有以下功能: <?php namespace TuxDrink; use Zend\ModuleManager\Feature\AutoloaderProviderInterface; class M

我正在尝试创建一个Zend Framework 2模块,其中包含一些我想在一些控制器中使用的泛型类

我在“vendor”目录中创建了一个名为“tux-drink-zf2-module”的目录

我将该目录添加到“application.config.php”中

my Module.php具有以下功能:

<?php

namespace TuxDrink;

use Zend\ModuleManager\Feature\AutoloaderProviderInterface;

class Module implements AutoloaderProviderInterface
{
public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/autoload_classmap.php',
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            ),
        ),
    );
}
}
<?php
// Generated by ZF2's ./bin/classmap_generator.php
return array(
'TuxDrink\Module'                                  => __DIR__ . '/Module.php',
'TuxDbCassandra'                                   => __DIR__ . '/src/TuxDrink/TuxDb/Cassandra/TuxDbCassandra.php',
'TuxDrink\Drink\Model\AlcoholSum'                  => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/AlcoholSum.php',
'TuxDrink\Drink\Model\AlcoholSumTable'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/AlcoholSumTable.php',
'TuxDrink\Drink\Model\Drink'                       => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/Drink.php',
'TuxDrink\Drink\Model\DrinkBrand'                  => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkBrand.php',
'TuxDrink\Drink\Model\DrinkBrandTable'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkBrandTable.php',
'TuxDrink\Drink\Model\DrinkCompany'                => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkCompany.php',
'TuxDrink\Drink\Model\DrinkCompanyTable'           => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkCompanyTable.php',
'TuxDrink\Drink\Model\DrinkFlavor'                 => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkFlavor.php',
'TuxDrink\Drink\Model\DrinkFlavorTable'            => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkFlavorTable.php',
'TuxDrink\Drink\Model\DrinkFlavorType'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkFlavorType.php',
'TuxDrink\Drink\Model\DrinkFlavorTypeTable'        => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkFlavorTypeTable.php',
'TuxDrink\Drink\Model\DrinkIngredient'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkIngredient.php',
'TuxDrink\Drink\Model\DrinkIngredientTable'        => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkIngredientTable.php',
'TuxDrink\Drink\Model\DrinkIngredientType'         => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkIngredientType.php',
'TuxDrink\Drink\Model\DrinkIngredientTypeTable'    => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkIngredientTypeTable.php',
'TuxDrink\Drink\Model\DrinkTable'                  => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkTable.php',
'TuxDrink\Drink\Model\DrinkType'                   => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkType.php',
'TuxDrink\Drink\Model\DrinkTypeTable'              => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/DrinkTypeTable.php',
'TuxDrink\Drink\Model\GlobalImage'                 => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImage.php',
'TuxDrink\Drink\Model\GlobalImageLink'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageLink.php',
'TuxDrink\Drink\Model\GlobalImageLinkPending'      => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageLinkPending.php',
'TuxDrink\Drink\Model\GlobalImageLinkPendingTable' => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageLinkPendingTable.php',
'TuxDrink\Drink\Model\GlobalImageLinkTable'        => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageLinkTable.php',
'TuxDrink\Drink\Model\GlobalImageTable'            => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageTable.php',
'TuxDrink\Drink\Model\GlobalImageType'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageType.php',
'TuxDrink\Drink\Model\GlobalImageTypeTable'        => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/GlobalImageTypeTable.php',
'TuxDrink\Drink\Model\LiquidColor'                 => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/LiquidColor.php',
'TuxDrink\Drink\Model\LiquidColorTable'            => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/LiquidColorTable.php',
'TuxDrink\Drink\Model\LiquidColorType'             => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/LiquidColorType.php',
'TuxDrink\Drink\Model\LiquidColorTypeTable'        => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/LiquidColorTypeTable.php',
'TuxDrink\Drink\Model\PendingDrinkCommits'         => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/PendingDrinkCommits.php',
'TuxDrink\Drink\Model\PendingDrinkCommitsTable'    => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Model/PendingDrinkCommitsTable.php',
'TuxDrink\TuxDb\Mysql\Drink\TuxDbMysqlDrink'       => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/TuxDbMysqlDrink.php',
'TuxDrink\TuxDb\Drink\Util\AlcoholCalc'            => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/Drink/Util/AlcoholCalc.php',
'TuxDrink\TuxDb\Mysql\TuxDbMysql'                  => __DIR__ . '/src/TuxDrink/TuxDb/Mysql/TuxDbMysql.php',
'TuxDrink\TuxDb\TuxDbAbstract'                     => __DIR__ . '/src/TuxDrink/TuxDb/TuxDbAbstract.php',
'TuxDrink\TuxDb\TuxDbInterface'                    => __DIR__ . '/src/TuxDrink/TuxDb/TuxDbInterface.php',
'TuxDrink\TuxDb\TuxDrinkInterface'                 => __DIR__ . '/src/TuxDrink/TuxDb/TuxDrinkInterface.php',
'TuxDrink\TuxDb\TuxTableInterface'                 => __DIR__ . '/src/TuxDrink/TuxDb/TuxTableInterface.php',
);
也许我丢失了一些其他文件,以便将其正确配置为模块? 记住,这是一个源代码包,没有控制器、视图和操作

如能提供有关该问题的任何信息,将不胜感激

更新 当我修复目录结构时,这个问题就解决了

但是当我尝试在一个控制器中使用模块时

在我的例子中,我需要使用TuxDrink模块中的两个类

类“TuxDbMysql”和类“TuxDbMysql”

我需要在“饮料品牌自动完成”中的控制器“DrinkController”中使用它们

我使用以下代码:

use \TuxDb\Mysql\Drink\TuxDbMysqlDrink;

use \TuxDb\Mysql\TuxDbMysql;


public function drinkBrandAutocompleteAction() {
    $param=$this->getRequest()->getQuery('q');
    if ($param) {
        $drink = new TuxDbMysqlDrink();
        $result=$drink->autoCompleteDrinkBrand($param);
        return $result;
    }
}
我得到以下错误消息:

 Fatal error: DrinkManagement\Controller\DrinkController cannot use TuxDrink\TuxDb\Mysql\Drink\TuxDbMysqlDrink - it is not a trait in /Volumes/2g-storage/projects/php-projects/myalcoholist/module/DrinkManagement/src/DrinkManagement/Controller/DrinkController.php on line 197
有什么想法吗

尝试谷歌,无法理解“这不是一种特质”的含义

更新 使用以下代码解决此问题:

public function drinkBrandAutocompleteAction() {
    $param=$this->getRequest()->getQuery('q');
    if ($param) {
        $drink = new \TuxDrink\TuxDb\Mysql\Drink\TuxDbMysqlDrink();
        $result=$drink->autoCompleteDrinkBrand($param);
        die(var_export($result,1));
     ...

根据错误,模块名称为
tux-drink-zf2-Module
。考虑到消毒,我将假设您的模块是类似于
TuxDrinkZf2Module
的CamelCased。因此,您在
Module.php
中分配的名称空间不匹配,因为它只是
TuxDrink


所以我猜你的名字都不正确

好的,它似乎与名称空间问题有关。现在检查它。名称空间=>DIR'/src/'。名称空间,好的,它不相关。我修复了src/TuxDrink中的源代码,并重新创建了autoload_classmap.php,但问题仍然存在。供应商内部的目录名为tux-drink-zf2-modulei,我将该目录重命名为TuxDrink,我再也不会收到错误了!:)我将继续,看看如何使用这些类。希望问题得到解决。当然,我还在application.config.php中将模块的名称更改为TuxDrink
public function drinkBrandAutocompleteAction() {
    $param=$this->getRequest()->getQuery('q');
    if ($param) {
        $drink = new \TuxDrink\TuxDb\Mysql\Drink\TuxDbMysqlDrink();
        $result=$drink->autoCompleteDrinkBrand($param);
        die(var_export($result,1));
     ...