2015-04-05 51 views
2

與作曲家文件中關於依存關係,例如,如果我用一個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設置它下面的類依賴於什麼呢?

丟棄了非類代碼或它是如何工作的?

+1

作曲家也承認了'files'負載指令 – 2015-04-05 11:13:31

+1

@MarkBaker呀,但你如何確保文件包含** **之前依賴於常量的其他文件? – Brett 2015-04-05 11:25:41

+1

據我所知,'files'指令會在啓動時立即自動加載所有列出的文件,因此它們始終在自動加載之前加載(無論是否需要) – 2015-04-05 11:32:42

回答

2

丟棄了非類代碼還是它是如何工作的?

不,它沒有被拋棄。 你看到的是生成的類自動加載。 這是一個文件映射類。類名是從文件中提取的。 如果一個文件包含多個類,那麼這些類將被提取並指向相同的文件。這是爲了允許個人使用這些類。

  • 如果您使用autoload.files指令,則Composer將在每個請求中包含這些文件。他們總是被加載。

  • 定義的順序決定了什麼是第一個。所以,如果你的代碼有引導代碼,比如Constants,它會影響引導之後的代碼和「文件」,然後將它放在文件部分的頂部。

  • 最好使用autoload.classmap指令來實現真正的自動加載(當使用類名時,加載文件)。試試這個:

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

太棒了。感謝您爲作曲家提供的所有幫助。 – Brett 2015-04-05 13:34:48

+0

不客氣。 (使用Composer運行舊版和舊版代碼並不容易,不僅安裝階段複雜,而且使用也很複雜。) – 2015-04-05 13:37:40