Composer Autoloading
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();
James Jeffery
Updated on July 09, 2022Comments
-
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 over 10 years"so you should not include it composer.json" what do you mean by this?
-
dev-null-dweller over 10 yearsMissed few words, you should not include it in path part
-
James Jeffery over 10 yearsI'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 over 10 yearsI forgot to add ... require 'vendor/autoload.php';
-
dev-null-dweller over 10 yearsAs for documentation, sure there is - getcomposer.org/doc/04-schema.md#autoload