Composer Autoloading

20,943

Solution 1

In your composer.json use:

"autoload": {
    "psr-0": {
        "": "src/"
    }
}

or

"autoload": {
    "psr-0": {
        "Twitter\\": "src/"
    }
}

and then run php composer.phar dump-autoload

Solution 2

Use

"psr-0": {
     "Twitter" : "src/"
 }

This instructs composer to create autoloader, that will look in src for everything from Twitter namespace. And since it is PSR-0, namespace is treated as a folder and added to declared path, so you should not include it in path part in composer.json

Solution 3

First of all,

My index.php file looks like this:

use Twitter;
$twitter = new Twitter();

If it's your index.php you forgot to include the composer's autoload script first.

require __DIR__ . '/vendor/autoload.php';

See https://getcomposer.org/doc/01-basic-usage.md#autoloading for details.

Solution 4

There is an error in your index.php, should be: use Twitter\Twitter; $twitter = new Twitter(); or $twitter = new Twitter\Twitter();

Share:
20,943
James Jeffery
Author by

James Jeffery

Updated on July 09, 2022

Comments

  • James Jeffery
    James Jeffery almost 2 years

    I'm currently trying to use PSR-0 autoloading with Composer, but I'm getting the following error:

    Fatal error: Class 'Twitter\Twitter' not found
    

    My directory structure looks like this

    - Project
        - src
            - Twitter
                Twitter.php
        - vendor
        - Test
        index.php
    

    My index.php file looks like this:

    <?php
    
        use Twitter;
        $twitter = new Twitter();
    

    My Twitter.php file looks like this

    <?php 
    
    namespace Twitter;
    
    class Twitter
    {
        public function __construct()
        {
            // Code Here
        }
    }
    

    And finally my composer.json looks like this:

    {
    "require": {
        "phpunit/phpunit": "3.8.*@dev",
        "guzzle/guzzle": "3.7.*@dev"
    },
    "minimum-stability": "dev",
    "autoload": {
        "psr-0": {
            "Twitter" : "src/Twitter"
        }
    }
    }
    

    I am getting a little confused. I come from a C# background and this way of working is kinda confusing me. What's the correct way to use PSR-0 autoloading?

  • James Jeffery
    James Jeffery over 10 years
    "so you should not include it composer.json" what do you mean by this?
  • dev-null-dweller
    dev-null-dweller over 10 years
    Missed few words, you should not include it in path part
  • James Jeffery
    James Jeffery over 10 years
    I'm still getting the same error. Is there any information online that explains how to do this? Are the rest of my files set up correctly?
  • James Jeffery
    James Jeffery over 10 years
    I forgot to add ... require 'vendor/autoload.php';
  • dev-null-dweller
    dev-null-dweller over 10 years
    As for documentation, sure there is - getcomposer.org/doc/04-schema.md#autoload