In a custom WordPress plugin I have a folder /classes
with about 20 classes. Classes sometimes change, come and go. I want all those classes from the folder to be loaded automatically.
No my idea was to load those files by a simple loop require:
foreach (scandir(dirname(__FILE__)."/classes/") as $filename) {
$path = dirname(__FILE__) . '/' . $filename;
if (is_file($path)) {
require $path;
}
}
However this does not work because there are subclasses loaded before superclasses and I get a fatal error.
PHP usually solves this problem with the spl_autoload_register() function.
However this seems not to work if used in multiple plugins. Has anybody found a good solution to this problem yet?
In a custom WordPress plugin I have a folder /classes
with about 20 classes. Classes sometimes change, come and go. I want all those classes from the folder to be loaded automatically.
No my idea was to load those files by a simple loop require:
foreach (scandir(dirname(__FILE__)."/classes/") as $filename) {
$path = dirname(__FILE__) . '/' . $filename;
if (is_file($path)) {
require $path;
}
}
However this does not work because there are subclasses loaded before superclasses and I get a fatal error.
PHP usually solves this problem with the spl_autoload_register() function.
However this seems not to work if used in multiple plugins. Has anybody found a good solution to this problem yet?
Share Improve this question edited Nov 14, 2018 at 16:54 Blackbam asked Nov 14, 2018 at 16:46 BlackbamBlackbam 57511 silver badges28 bronze badges 2- Have you considered using the composer autoloader? I have multiple plugins each with their own composer generated autoloaders, and they work just fine – Tom J Nowell ♦ Commented Nov 14, 2018 at 17:42
- Not yet thats a good idea. – Blackbam Commented Nov 14, 2018 at 17:56
1 Answer
Reset to default 0Composer Autoloader as suggested in the comments is the best way to do it. Just use composers classmap feature:
"autoload": {
"classmap": ["classes/"]
}