Create instances of all classes in a directory with PHP

class, directory, function, php

Solution

Something like this ought to get the job done:

<?php

    foreach (glob('test/class/*.php') as $file)
    {
        require_once $file;

        // get the file name of the current file without the extension
        // which is essentially the class name
        $class = basename($file, '.php');

        if (class_exists($class))
        {
            $obj = new $class;
            $obj->OnCall();
        }
    }

Problem

I have a directory with several PHP files consisting of classes with the same names as the files. (`Sample.php`'s class will be called `Sample`.) Each of these classes have a function called `OnCall()`. How can I create an instance of every class in my directory and execute all of their `OnCall()`s? I cannot do it manually (`$sample = new Sample(); $sample->OnCall();`, etc etc etc) because more classes will be added, edited and deleted by users.

Original source