gpt4 book ai didi

zend-framework2 - 如何在 Zend Framework 2 中加载自定义库?

转载 作者:行者123 更新时间:2023-12-03 14:06:31 25 4
gpt4 key购买 nike

我一直在关注本指南 (http://socialsemanticweb.blogspot.com.au/2012/11/zend-framework-2-create-custom-library.html),但我无法让 Zend 查看我的库(错误消息如下)。

有什么想法可能是错的吗?谢谢

我的文件夹结构

http://imgur.com/Uhhm3uk

我的 MyLibraryController.php

<?php

namespace MyLibrary\Mvc\Controller;

use Zend\Mvc\Controller\AbstractActionController;

class MyLibraryController extends AbstractActionController {
public function __construct() {
}

public function doSomething() {
//instantiate your model here and return result
$result = "test";
return $result;
}
}

我的 autoload_namespaces.php (内部供应商\ Composer )
<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'ZendTest\\' => $vendorDir . '/zendframework/zendframework/tests/',
'Symfony\\Component\\Console\\' => $vendorDir . '/symfony/console/',
'Doctrine\\ORM' => $vendorDir . '/doctrine/orm/lib/',
'Doctrine\\DBAL' => $vendorDir . '/doctrine/dbal/lib/',
'Doctrine\\Common' => $vendorDir . '/doctrine/common/lib/',
'DoctrineORMModule\\' => $vendorDir . '/doctrine/doctrine-orm-module/src/',
'DoctrineORMModuleTest\\' => $vendorDir . '/doctrine/doctrine-orm-module/tests/',
'DoctrineModule\\' => $vendorDir . '/doctrine/doctrine-module/src/',
'DoctrineModuleTest\\' => $vendorDir . '/doctrine/doctrine-module/tests/',
'MyLibrary\\' => $vendorDir . '/MyLibrary/library/',
);

我的应用程序.config.php (我只添加了 MyLibrary 条目。 我尝试过使用和不使用它 )
<?php
return array(
// This should be an array of module namespaces used in the application.
'modules' => array(
'Application',
'DoctrineModule',
'DoctrineORMModule',
'Directory',
'Helpers',
'MyLibrary',

未在 application.config.php 中添加 MyLibrary 模块的错误消息
Fatal error: Class 'Directory\Controller\MyLibaryController' not found in D:\work\eclipse\htdocs\directory\module\Directory\src\Directory\Controller\DirectoryController.php on line 17

application.config.php 中带有 MyLibrary 模块条目的错误消息
Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (MyLibrary) could not be initialized.' in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php:175 Stack trace: #0 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(149): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent)) #1 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule('MyLibrary') #2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent)) #3 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent)) #4 D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library in D:\work\eclipse\htdocs\directory\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 175

最佳答案

首先,它不是一个模块,所以通过将它添加到应用程序配置的模块数组中得到的错误消息是可以预料的。

编辑 autoload_namespaces.php添加您的库(因为您已经拥有)应该可以工作。

也就是说,更正确的方法是添加 autoload您的根 composer.json 文件的 key 并在那里进行映射

{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": ">2.2.0rc1"
},
"autoload": {
"psr-0": {"MyLibrary\\": "vendor/MyLibrary/library/"}
}
}

之后,从命令行运行 composer.phar update ,它会自动为您将您的库添加到 autoload_namespaces 文件中。这样做意味着您不必在每次使用 composer 更新其他库时手动编辑文件。

对于错误本身

Fatal error: Class 'Directory\Controller\MyLibaryController' not found in D:\work\eclipse\htdocs\directory\module\Directory\src\Directory\Controller\DirectoryController.php on line 17



我猜在处理了自动加载之后,你只是缺少了一个 use您的 DirectoryController 中的声明类(class)
<?php
namespace Directory\Controller;

// be sure to use your library controller
use MyLibrary\Mvc\Controller\MyLibraryController;

class DirectoryController extends MyLibraryController
{
//..
}

关于zend-framework2 - 如何在 Zend Framework 2 中加载自定义库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291600/

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