Composer not autoloading classes in directory with same name

370 Views Asked by At

I am using composer to include a private package in my project that will includes some classes I will use to test against with PHPUnit. Most of the package is being autoloaded correctly and I can call the classes from my unit test, however any class that is named the same as the directory it is in is throwing a "Class not found" error.

The repository is conforming to psr-0 and is located at https://github.com/DeschutesDesignGroupLLC/IPS-Source

File structure example throwing error:

--src ----IPS ------DateTime --------DateTime.php

Calling $date = new \IPS\DateTime; throws an error.

File structure example NOT throwing error:

--src ----IPS ------Http --------Url.php

Calling $url = new \IPS\Http\Url; does not throw an error.

Composer.json of private package:

{
  "name": "deschutesdesigngroupllc/ips",
  "description": "Invision power board source files used to test against",
  "homepage": "https://www.invisioncommunity.com",
  "version": "4.3.6",
  "autoload": {
    "psr-0": {
      "IPS\\": "src/"
    }
  },
  "extra": {
    "branch-alias": {
      "dev-master": "4.3.6"
    }
  },
  "require": {
    "phpdocumentor/phpdocumentor": "dev-master"
  }
}
1

There are 1 best solutions below

2
enhzflep On

In the first example, you want a file yet you give the path to it's parent. In the second, you again want a file, but this time supply the full path. Unsurprisingly, the first fails and the second succeeds.

It would appear that

$date = new \IPS\DateTime\DateTime;

is what you intended to ask for.