Littlebobbydroptables
Littlebobbydroptables

Reputation: 3731

Composer doesnt update autoload namespace

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(
);

Upvotes: 2

Views: 1174

Answers (2)

Goke Obasa
Goke Obasa

Reputation: 4898

Just to add to what Hari K T said, be sure to remove the vendor directory after making an update to the composer.json file as composer uses the installed.json file in the ./vendor/composer directory to generate the autoload php files.

I had setup the composer.json correctly, but did not remove the existing vendor directory, so I assumed the answer provided by Hari K T didn't work.

Upvotes: 2

Hari K T
Hari K T

Reputation: 4244

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

Upvotes: 2

Related Questions