dsgdf45654 2014-06-21 20:43
浏览 40
已采纳

Composer不会更新自动加载名称空间

Composer not updating autoload_namespaces.php file, despite downloading package normaly. Can't understand where i did a mistake. If i load something from packagist, namespaces file updating successfully.

Project structure

Structure

Main 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": "*"
    }
}

Package 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条回答 默认 最新

  • dtnrsmi824877 2014-06-24 01:57
    关注

    You are downloading the package defined in the repositories via zip.

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

    In this case I feel you should define the package definition at the same place. See the above link for the example which contains autoload definition defined.

    {
        "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": "*"
        }
    }
    

    You can also try some variation see my post over http://harikt.com/blog/2014/05/29/hidden-gems-of-composer/

    PS : psr-4 is the recommended way for it can autoload psr-0 structured classes. See https://getcomposer.org/doc/04-schema.md#autoload

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?