簡體   English   中英

zend Framework 2 +教義2安裝

[英]zend framework 2 + doctrine 2 installation

Zend Framework 2 +原則2

提到這個問題,我有一個關於安裝過程的簡單問題。

由於我在Windows 8計算機上使用Zend Server CE,而且我沒有GitHub帳戶,因此必須手動將DoctrineModule和DoctrineORM模塊下載到供應商文件夾。 我的問題是,我還需要下載Doctrine庫並將其CD放入供應商文件夾嗎?

*編輯

我通過GIT安裝,在php_error.log中收到此錯誤

[13-May-2012 01:37:22] PHP Fatal error:  Uncaught exception 'ReflectionException' with message 'Class Doctrine\ORM\Mapping\Driver\AnnotationDriver does not exist' in C:\Zend\Apache2\htdocs\zf2\vendor\DoctrineORMModule\Module.php:71
Stack trace:
#0 C:\Zend\Apache2\htdocs\zf2\vendor\DoctrineORMModule\Module.php(71): ReflectionClass->__construct('Doctrine\ORM\Ma...')
#1 [internal function]: DoctrineORMModule\Module->registerAnnotations(Object(Zend\Module\ModuleEvent))
#2 C:\Zend\Apache2\htdocs\zf2\vendor\ZendFramework\library\Zend\EventManager\EventManager.php(463): call_user_func(Array, Object(Zend\Module\ModuleEvent))
#3 C:\Zend\Apache2\htdocs\zf2\vendor\ZendFramework\library\Zend\EventManager\EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('loadModules.pos...', Object(Zend\Module\ModuleEvent), NULL)
#4 C:\Zend\Apache2\htdocs\zf2\vendor\ZendFramework\library\Zend\Module\Manager.php(87): Zend\EventManager\EventManager->trigger('loadModules.pos...', Object(Zend\Module\Manager), Object(Zend\Module\ModuleEvent))
#5 C:\Zend\Apache2 in C:\Zend\Apache2\htdocs\zf2\vendor\DoctrineORMModule\Module.php on line 71

這是Module.php

<?php
/*
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.doctrine-project.org>.
 */

namespace DoctrineORMModule;

use RuntimeException;
use ReflectionClass;
use Zend\EventManager\Event;
use Zend\Module\Consumer\AutoloaderProvider;
use Zend\Module\Manager;
use Zend\Module\ModuleEvent;
use Zend\Loader\StandardAutoloader;
use Doctrine\Common\Annotations\AnnotationRegistry;

/**
 * Base module for Doctrine ORM.
 *
 * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
 * @link    www.doctrine-project.org
 * @since   1.0
 * @version $Revision$
 * @author  Kyle Spraggs <theman@spiffyjr.me>
 * @author  Marco Pivetta <ocramius@gmail.com>
 */
class Module implements AutoloaderProvider
{
    /**
     * @param Manager $moduleManager
     */
    public function init(Manager $moduleManager)
    {
        $moduleManager->events()->attach('loadModules.post', array($this, 'registerAnnotations'));
    }

    /**
     * Registers annotations required for the Doctrine AnnotationReader
     *
     * @param  ModuleEvent $e
     * @throws RuntimeException
     */
    public function registerAnnotations(ModuleEvent $e)
    {
        $config = $e->getConfigListener()->getMergedConfig();
        $config = $config['doctrine_orm_module'];

        if ($config->use_annotations) {
            $annotationsFile = false;

            if (isset($config->annotation_file)) {
                $annotationsFile = realpath($config->annotation_file);
            }

            if (!$annotationsFile) {
                // Trying to load DoctrineAnnotations.php without knowing its location
                $annotationReflection = new ReflectionClass('Doctrine\ORM\Mapping\Driver\AnnotationDriver');
                $annotationsFile = realpath(dirname($annotationReflection->getFileName()) . '/DoctrineAnnotations.php');
            }

            if (!$annotationsFile) {
                throw new RuntimeException('Failed to load annotation mappings, check the "annotation_file" setting');
            }

            AnnotationRegistry::registerFile($annotationsFile);
        }

        if (!class_exists('Doctrine\ORM\Mapping\Entity', true)) {
            throw new RuntimeException('Doctrine could not be autoloaded: ensure it is in the correct path.');
        }
    }

    /**
     * Retrieves configuration that can be consumed by Zend\Loader\AutoloaderFactory
     *
     * @return array
     */
    public function getAutoloaderConfig()
    {
        if (realpath(__DIR__ . '/vendor/doctrine-orm/lib')) {
            return array(
                'Zend\Loader\StandardAutoloader' => array(
                    StandardAutoloader::LOAD_NS => array(
                        __NAMESPACE__                   => __DIR__ . '/src/' . __NAMESPACE__,
                        __NAMESPACE__ . 'Test'          => __DIR__ . '/tests/' . __NAMESPACE__ . 'Test',
                    ),
                ),
            );
        }

        return array();
    }

    /**
     * @return array
     */
    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
}

從git安裝時,是否還更新了子模塊? 如果沒有,請使用cd進入DoctrineORMModule目錄並使用以下命令:

git submodule update --init

順便說一句,composer install是推薦的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM