Does the PHP autoloader function also work with static method calls?

Viewed 9645

I slightly remember that autoload worked with the new statement. Now how about when I have several utility classes and I want to autoload these? And I only use static methods?

Like:

MathGuru::calculateFoo($bar);

Would autoload load MathGuru here? Or must I include it manually?

6 Answers

The autoloading mechanism works exactly the same way with static classes that it does with non-static one :

  • The autoload function/method you registered will be called
  • It'll receive the name of the class
  • And it'll have to require/include the necessary PHP code


Actually, the autoloader doesn't even have to "know" if it is called to load a static or a dynamic class, as its role is to load the PHP code that contains the class' definition -- and not instantiate it or anything.

Yes it would trigger __autoload.

It's not just 'new' that triggers autoloading - any reference to an unknown class will do it. Even something like using class_exists will trigger the autoloader (this isn't always desirable behaviour, which is why class_exists has a second parameter to disable autoloading)

Surely the best, and fastest way is to try it?

From the docs there is nothing that mentions new being needed.

Related