Chris Schmitz Chris Schmitz - 2 years ago 220
PHP Question

Laravel/Composer: The use statement with non-compound name

In my laravel project I created a model called

. The model resides in the
folder. My composer file has an autoload of:

"autoload": {
"classmap": [


And I have a
statement in my ExtendedUserController that references


use CustomerLinks;

class ExtendedUserController extends UserController {

It's my understanding that since the autoload property in the composer file has app/models in the classmap it means I should be able to use
use CustomerLinks
without a namespace prefix.

This works, but any time I make a change to my ExtendedUserControler and reload my browser I get the error:

The use statement with non-compound name 'CustomerLinks' has no effect

The error points to the
use CustomerLinks
line extended user controller.

When I do a
composer dump-autoload
everything works fine, but it becomes extremely irritating when I have to follow the pattern

make a change -> dump autoload -> refresh browser -> repeat

Is there some way of dealing with the error?

Answer Source

If you are not within a namespace (i.e. you are in the root namespace), and the class you want to use also is not in a namespace (i.e. also in the root namespace), then using use makes no sense, because the code will work the same without it. You are not importing anything with this statement.

Composer has nothing to do with this, neither has any other autoloading. It's how PHP works by itself.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download