HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/survey.wb-webdesign.com/private_html/application/helpers/ClassFactory.php
<?php

class ClassFactory
{
    protected static $map = array();
    protected static $registered = false;

    public static function autoload(string $className)
    {
        foreach (self::$map as $prefix => $baseClass) {
            if (strpos($className, (string) $prefix) === 0) {
                self::createClass($baseClass, $className);
                return true;
            }
        }
        return false;
    }

    public static function createClass($baseClass, $className)
    {
        $code = "class $className extends $baseClass {}";
        return eval($code);
    }

    /**
     * @param string $prefix
     * @param string $baseClass
     */
    public static function registerClass($prefix, $baseClass)
    {
        self::$map[$prefix] = $baseClass;
        // Keep the array "reverse"-sorted by keys.
        //uksort(self::$map, function($a, $b) { return strcmp($a, $b) * -1;} );

        // mdekker: Don't see the need for sorting, but since anonymous functions
        //          can break on eaccelerator avoid it when possible uncomment if needed:
        //krsort(self::$map);
        if (!self::$registered) {
            self::$registered = spl_autoload_register(array(get_class(new static), 'autoload'), true, true);
        }
    }
}