2014-06-21 128 views
2

作曲家不更新autoload_namespaces.php文件,儘管下載包正常。無法理解我犯了什麼錯誤。 如果我從packagist加載某些東西,名稱空間文件更新成功。作曲家不更新自動加載名稱空間

項目結構

Structure

主要Composer.json

{ 
    "repositories":[ 
     { 
      "type": "package", 
      "package": { 
       "name": "test/framework", 
       "version": "1.0.0.1", 
       "dist": { 
        "url": "http://localhost/repo/1.zip", 
        "type": "zip" 
       } 
      } 
     } 
    ], 

    "require": { 
     "test/framework": "*" 
    } 
} 

包composer.json

{ 
    "name": "test/framework", 
    "type": "library", 
    "require": { 
     "php": ">=5.2.4" 
    }, 
    "autoload": { 
     "psr-0" : { 
      "Test" : "lib/" 
     } 
    } 
} 

autoload_namespaces.php

<?php 

// autoload_namespaces.php @generated by Composer 

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

return array(
); 

回答

2

您正在通過zip下載在存儲庫中定義的軟件包。

https://getcomposer.org/doc/05-repositories.md#package-2

在這種情況下,我覺得你應該在同一個地方定義包定義。有關包含自定義定義的示例,請參閱上面的鏈接。

{ 
    "repositories":[ 
     { 
      "type": "package", 
      "package": { 
       "name": "test/framework", 
       "version": "1.0.0.1", 
       "dist": { 
        "url": "http://localhost/repo/1.zip", 
        "type": "zip" 
       }, 
       "autoload": { 
        "psr-4" : { 
         "Test\\": "lib" 
        } 
       } 
      } 
     } 
    ], 

    "require": { 
     "test/framework": "*" 
    } 
} 

您也可以嘗試一些變化看我的帖子超過http://harikt.com/blog/2014/05/29/hidden-gems-of-composer/

PS:PSR-4是因爲它可以自動加載PSR-0結構類的推薦方式。請參閱https://getcomposer.org/doc/04-schema.md#autoload

2

只需要添加到Hari KT所說的內容中,由於作曲者使用./vendor/composer目錄中的installed.json文件生成composer.json文件,所以一定要刪除vendor目錄以生成自動加載的PHP文件。

我已經正確設置了composer.json,但沒有刪除現有的供應商目錄,所以我認爲由Hari K T提供的答案無效。