composer是否只引用类并丢弃其他代码


Does composer only reference classes and discard other code?

关于composer文件中的依赖关系,例如,如果我使用classmap来包含这些文件,我会注意到生成了一个自动加载文件,例如:

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
    'BBCode' => $vendorDir . '/cyphix333/nbbc/nbbc.php',
    'BBCodeEmailAddressValidator' => $vendorDir . '/cyphix333/nbbc/nbbc.php',
    'BBCodeLexer' => $vendorDir . '/cyphix333/nbbc/nbbc.php',
    'BBCodeLibrary' => $vendorDir . '/cyphix333/nbbc/nbbc.php',
);

现在,根据我的判断,这是指它可以在哪里找到所有需要的类;但是,如果该文件中还有其他代码,例如CONSTANTS集,它下面的类依赖于它,该怎么办?

非类代码被丢弃了吗?它是如何工作的?

非类代码被丢弃了吗?它是如何工作的?

不,这是不公开的。您看到的是自动加载的生成类映射。这是一个类到文件的映射。类名是从文件中提取的。如果一个文件包含多个类,那么这些类将被提取并指向同一个文件。这样做是为了允许单独使用这些类。

  • 如果使用autoload.files指令,则Composer将在每个请求中包含这些文件。它们总是满载的。

  • 定义的顺序决定了什么是第一个。因此,如果你的代码有引导程序代码,比如Constants,它会影响引导程序之后的代码和"文件",那么把它放在files部分的顶部。

  • 最好使用autoload.classmap指令进行真正的自动加载(使用类名时,加载文件)。试试这个:

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