наследственность детской темы и автозагрузка php

Я написал этот метод в родительском им, который будет автоматически загружать класс на основе имени класса, поэтому, если имя класса: SomeFolder_Folder_Folder_Class.php, то оно преобразует его в: SomeFolder / Folder / Folder / Class.php и загрузит его, если это существует:

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

Это работает в сочетании с spl_autoload_register() для достижения этой функции «автоматической загрузки». Поэтому вместо того, чтобы иметь кучу require_once, вы просто выполните: new SomeFolder_Folder_Folder_Class() и автоматически загрузите его.

Это отлично работает в родительском им и даже в дочерней теме при загрузке классов из родительской темы. Как бы то ни было, при попытке загрузить классы из дочерней темы – она ​​терпит неудачу и заявляет, что не может найти указанный класс.

Поэтому я думал, что давайте сделаем:

 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'); } } } 

Но тогда родительские классы классов начинают волноваться из-за стона, которые не могут быть найдены, поэтому я добавил новый уровень сложности:

 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'); } } } 

Но потом вернулись на круги своя, где вы не можете найти класс детской темы ….

Итак – с этим сказал: «Что делать? Как заставить автозагрузчик работать как в родительской теме, так и в дочерней теме?

Добавлен уровень сложности? классы дочерних тем могут расширять и внедрять родительские классы тем.

Мысли?

Solutions Collecting From Web of "наследственность детской темы и автозагрузка php"