Kind Theme Inhericance und PHP Autoload

Ich habe diese Methode in einem Elternteil geschrieben, das automatisch eine class basierend auf dem classnnamen lädt, also wenn der classnname ist: SomeFolder_Folder_Folder_Class.php, dann wird das in: SomeFolder / Folder / Folder / Class.php konvertiert und es wird geladen Es existiert:

public function load_class($class){ $path = str_replace('_', '/', $class); if(file_exists(get_template_directory() . '/' . $path . '.php')){ require_once(get_template_directory() . '/' . $path . '.php'); } } 

Dies funktioniert in Verbindung mit spl_autoload_register() , um diese automatische spl_autoload_register() zu erreichen. Anstatt also eine Menge von require_once zu haben, tun Sie einfach: new SomeFolder_Folder_Folder_Class() und lädt sie automatisch.

Dies funktioniert hervorragend in den übergeordneten Elementen und sogar im untergeordneten Thema, wenn classn aus dem übergeordneten Thema geladen werden. Beim Versuch, classn aus dem untergeordneten Thema zu laden, schlägt es jedoch fehl und gibt an, dass es die class nicht finden kann.

Also ich dachte, wir können:

 public function load_class($class){ $path = str_replace('_', '/', $class); if(is_child_theme()){ if(file_exists(get_template_directory() . '/' . $path . '.php')){ require_once(get_template_directory() . '/' . $path . '.php'); } }else{ if(file_exists(get_template_directory() . '/' . $path . '.php')){ require_once(get_template_directory() . '/' . $path . '.php'); } } } 

Aber dann fangen Elternklassen an zu stöhnen, sie können nicht gefunden werden, also habe ich eine neue Stufe der Komplexität hinzugefügt:

 public function load_class($class){ $path = str_replace('_', '/', $class); if(is_child_theme()){ if(file_exists(get_stylesheet_directory() . '/' . $path . '.php')){ require_once(get_stylesheet_directory() . '/' . $path . '.php'); }else{ if(file_exists(get_template_directory() . '/' . $path . '.php')){ require_once(get_template_directory() . '/' . $path . '.php'); } } }else{ if(file_exists(get_template_directory() . '/' . $path . '.php')){ require_once(get_template_directory() . '/' . $path . '.php'); } } } 

Aber dann waren wir zurück auf Platz eins, wo du die Kinderthemenklasse nicht finden kannst ….

Also – mit dem gesagt, Was sollte tun? Wie kann ich den automatischen Ladevorgang sowohl im übergeordneten als auch im untergeordneten Thema ausführen?

Zusätzliches Level an Komplexität? Untergeordnete Themenklassen können übergeordnete Themenklassen erweitern und implementieren.

Gedanken?

Solutions Collecting From Web of "Kind Theme Inhericance und PHP Autoload"