简体   繁体   English

作曲家自动加载

[英]Composer autoload

Trying to autoload some files. 尝试自动加载一些文件。 If i do this in the 'root' composer.json - it works. 如果我在'root'composer.json中执行此操作-它可以工作。 But when i'm going to load classes and files in 'package composer.json' it doesn't seem to be working at all. 但是,当我要在“ package composer.json”包中加载类和文件时,它似乎根本无法正常工作。

My 'root' composer.json: 我的'root'composer.json:

{
    "repositories": [
        {
            "type": "git",
            "url": "https://bitbucket.org/yuriikrevnyi/bitrix-teil-framework"
        }
    ],
    "require": {
        "mockery/mockery": "dev-master@dev",
        "phpunit/phpunit": "3.7.*",
        "yuriikrevnyi/bitrix-teil-framework": "dev-master"
    },
    "autoload": {
        "classmap": [
            "vendor/yuriikrevnyi/bitrix-teil-framework/framework/src"
        ],
        "files": [
             "vendor/yuriikrevnyi/bitrix-teil-framework/framework/start.php"
        ]
    }
}

And 'package composer.json': 和'package composer.json':

{
    "name": "yuriikrevnyi/bitrix-teil-framework",
    "description": "Framework for bitrix.",
    "homepage": "https://bitbucket.org/yuriikrevnyi/bitrix-teil-framework",
    "authors": [
        {
            "name": "Yurii Krevnyi",
            "homepage": "https://bitbucket.org/yuriikrevnyi"
        }
    ],
    "autoload": {
        "classmap": [
            "vendor/yuriikrevnyi/bitrix-teil-framework/framework/src"
        ],
        "files": [
             "vendor/yuriikrevnyi/bitrix-teil-framework/framework/start.php"
        ]
    }
}

If i remove autoloads from 'root composer.json' - nothing happens. 如果我从“ root composer.json”中删除自动加载,则不会发生任何事情。

I'm using - composer dump-autoload -o , to load files. 我正在使用-composer dump-autoload -o加载文件。

Could someone help me a little bit? 有人可以帮我一点吗? Thanks! 谢谢!

You shouldn't be referencing the vendor directory. 您不应引用供应商目录。 Composer handles that directory for you, but you shouldn't be assuming that things will exist in there. Composer会为您处理该目录,但是您不应该假定那里将存在任何内容。

Assuming that the class files you want to be available to autoload are in $workDIR."yuriikrevnyi/bitrix-teil-framework/src" and the start.php is in the directory below that, the composer.json in $workDIR."yuriikrevnyi/bitrix-teil-framework/ should have classmap and files entries defined as: 假设要自动加载的类文件位于$workDIR."yuriikrevnyi/bitrix-teil-framework/src" ,而start.php位于该目录下, $workDIR."yuriikrevnyi/bitrix-teil-framework/应该将类映射和文件条目定义为:

"autoload": {
    "classmap": [
        "src/"
    ],
    "files": [
         "start.php"
    ]
}

When Composer pulls that dependency into your main project, it will modify the entries to point to the right location in the vendor directory. 当Composer将这种依赖关系拉入您的主项目时,它将修改条目以指向供应商目录中的正确位置。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM