我了解如何注册自动加载器,甚至如何创建自动加载器,这根本不是问题。主要问题是 - 如何让两个自动装载机并排运行以执行以下操作:
class project_one_folder_class extends project_two_folder_class{}
您会注意到,子类属于一个项目,该项目正在伸出并调用位于不同项目中的父类。
项目链接的方式项目二的类总是可以被自动加载器看到,但是项目二的类却永远不会被看到。
所以我的想法是编写两个自动加载器并注册它们,因为 php 会查看另一个。 php 似乎只查找其中一个而不查找另一个。
你会如何解决这个问题?
Edit
项目二是父项目,项目一是子项目。这是一个更扩展的问题在这个问题上发布了什么 https://stackoverflow.com/questions/15532069/wordpress-child-themes-and-php-autoload.
为了更好的拓展这就是我的班级。
class AisisCore_Loader_AutoLoader{
protected static $_instance;
public function get_instance(){
if(null == self::$_instance){
self::$_instance = new self();
}
return self::$_instance;
}
public function reset_instance(){
self::$_instance = null;
}
public function register_auto_loader(){
spl_autoload_register(array($this, 'load_class'));
spl_autoload_register(array($this, 'load_child_class'));
}
public function load_class($class){
$path = str_replace('_', '/', $class);
if(file_exists(get_template_directory() . '/' . $path . '.php')){
require_once(get_template_directory() . '/' . $path . '.php');
}
}
public function load_child_class($class){
$path = str_replace('_', '/', $class);
if(file_exists(get_stylesheet_directory() . '/' . $path . '.php')){
require_once(get_stylesheet_directory() . '/' . $path . '.php');
}
}
}
目前,此类将加载父项目中的任何内容。它甚至会在子项目中加载父项目对象。然而,由于找不到此类,因此无法使用此类加载子对象。
熟悉 WordPress 的人会立即说,是的,因为你有get_template_directory
当你想要的时候get_stylesheet_directory
然而 - 知道这一点 - 我想编写两个自动加载器,一个将使用加载子项目对象get_stylesheet_directory
然后将通过加载父对象get_stylesheet_directory
以便:
class project_one_folder_class extends project_two_folder_class{}
工作和加载,没有错误。