我无法使用composer生成名称空间。此外,使用autoload_static加载文件

时间:2016-09-04 22:51:46

标签: composer-php

我无法使用composer生成名称空间。此外,使用autoload_static而不是autoload_files,autoload_namespaces加载文件......

composer.json

{
    "autoload": {
        "psr-4": {
            "core\\" : "/src/core/",
            "CrmBundle\\Entity\\" : "/src/CrmBundle/Entity/",
            "CrmBundle\\Controller\\" : "/src/CrmBundle/Controller/"

        },
        "classmap": [
            "src/core/App.php",
            "src/core/View.php",
            "src/core/Controller.php"
        ]
    },    

    "require": {
        "doctrine/orm": "^2.5",
        "symfony/console": "~2.5",
        "twig/twig": "^1.24",
        "filp/whoops": "^2.1"
    }  
}

生成的autoload_namespaces:

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

return array(
    'Twig_' => array($vendorDir . '/twig/twig/lib'),
    'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'),
    'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'),
    'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
    'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'),
    'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'),
    'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib'),
);

首先,没有我的名称空间。其次,生成的命名空间未加载,因为出于某种原因在autoload_real中,加载通过autoload_static

$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
if ($useStaticLoader) {
    require_once __DIR__ . '/autoload_static.php';
    print_r(" <br> static_loafing"); //i see this in index.php
    call_user_func(\Composer\Autoload\ComposerStaticInit26d4625e30b8fe554b6b94853829798f::getInitializer($loader));
} else {

1 个答案:

答案 0 :(得分:0)

您的自动加载路径不得以斜线开头!它们必须相对于composer.json文件的位置。很可能你只需删除斜杠就可以了。

自动加载使用autoload_static.php的原因是因为您使用的是PHP 5.6或更高版本。这个版本提供了一种非常有效地进行自动加载的方法,因此Composer使用它来加快速度。无需担心这一点,这不是你问题的一部分。