Composer autoload_namespaces数组为空,但它正在下载我的包

Sha*_*ock 6 php composer-php

我正在使用Windows上的作曲家,当我执行一个composer install或多个时,它正在成功加载我正在使用我的composer.json文件的2个包composer update.

{
    "require": {
        "bcosca/fatfree": "dev-master",
        "respect/validation": "^1.1"
    }
}
Run Code Online (Sandbox Code Playgroud)

我的index.php中的第一行是

require_once __DIR__ . '\vendor\autoload.php';
Run Code Online (Sandbox Code Playgroud)

例如,这似乎没有加载任何东西,很多错误与这两个包中没有定义的类有关.我进一步调查了一下,发现我的autoload_namespaces.php情况如下:

<?php

// autoload_namespaces.php @generated by Composer

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

return array(
);
Run Code Online (Sandbox Code Playgroud)

阵列完全是空的,这是怎么发生的?我希望在这里看到这两个包的要求......

谢谢您的帮助!

从包本身添加composer.json:F3:

{
    "name": "bcosca/fatfree",
    "description": "A powerful yet easy-to-use PHP micro-framework designed to help you build dynamic and robust Web applications - fast!",
    "homepage": "http://fatfreeframework.com/",
    "license": "GPL-3.0",
    "require": {
        "php": ">=5.3.6"
    },
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/bcosca/fatfree"
        }
    ],
    "autoload": {
        "files": ["lib/base.php"]
    }
}
Run Code Online (Sandbox Code Playgroud)

验证器:

{
    "name": "respect/validation",
    "description": "The most awesome validation engine ever created for PHP",
    "keywords": ["respect", "validation", "validator"],
    "type": "library",
    "homepage": "http://respect.github.io/Validation/",
    "license": "BSD Style",
    "authors": [
        {
            "name": "Respect/Validation Contributors",
            "homepage": "https://github.com/Respect/Validation/graphs/contributors"
        }
    ],
    "require": {
        "php": ">=5.4",
        "symfony/polyfill-mbstring": "^1.2"
    },
    "require-dev": {
        "egulias/email-validator": "~1.2",
        "malkusch/bav": "~1.0",
        "mikey179/vfsStream": "^1.5",
        "phpunit/phpunit": "~4.0",
        "symfony/validator": "~2.6.9",
        "zendframework/zend-validator": "~2.3"
    },
    "suggest": {
        "ext-bcmath": "Arbitrary Precision Mathematics",
        "ext-mbstring": "Multibyte String Functions",
        "egulias/email-validator": "Strict (RFC compliant) email validation",
        "malkusch/bav": "German bank account validation",
        "symfony/validator": "Use Symfony validator through Respect\\Validation",
        "zendframework/zend-validator": "Use Zend Framework validator through Respect\\Validation",
        "fabpot/php-cs-fixer": "Fix PSR2 and other coding style issues"
    },
    "autoload": {
        "psr-4": {
            "Respect\\Validation\\": "library/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Respect\\Validation\\": "tests/library/"
        }
    },
    "extra": {
        "branch-alias": {
            "dev-master": "1.1-dev"
        }
    },
    "scripts": {
        "test": "./vendor/bin/phpunit"
    }
}
Run Code Online (Sandbox Code Playgroud)

在加载Validator之后,这个Symfony组件附带了它:

{
    "name": "symfony/polyfill-mbstring",
    "type": "library",
    "description": "Symfony polyfill for the Mbstring extension",
    "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
    "homepage": "https://symfony.com",
    "license": "MIT",
    "authors": [
        {
            "name": "Nicolas Grekas",
            "email": "p@tchwork.com"
        },
        {
            "name": "Symfony Community",
            "homepage": "https://symfony.com/contributors"
        }
    ],
    "require": {
        "php": ">=5.3.3"
    },
    "autoload": {
        "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
        "files": [ "bootstrap.php" ]
    },
    "suggest": {
        "ext-mbstring": "For best performance"
    },
    "minimum-stability": "dev",
    "extra": {
        "branch-alias": {
            "dev-master": "1.3-dev"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ray*_*yne 4

数组完全是空的,这是怎么发生的?我希望在这里看到这两个包的要求......

  • Composer 支持多种类加载方法。其中一项重要内容是实施PSR4规范。SymfonyRespect正在使用PSR4. 您可以通过查看他们的composer.json文件或您生成的vendor/composer/autoload_psr4.php文件来验证它。

  • Fat-Free Framework 允许 Composer自动加载lib/base.php文件。知道这一点很重要,因为包含base.php两次会抛出PHP Fatal error: Cannot declare class Cache, because the name is already in use. 解决方案是让 Composer 完成其工作并获取$f3 = Base::instance()

建议

  • 删除vendor文件夹并进行全新安装Composer

  • 验证代码中是否缺少(或导入)类名称空间,例如,\Respect\Validation\Validator而不是Validator