Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自动加载器未在正确位置查看_Php_Wordpress_Autoloader - Fatal编程技术网

Php 自动加载器未在正确位置查看

Php 自动加载器未在正确位置查看,php,wordpress,autoloader,Php,Wordpress,Autoloader,关于WordPress,您有两个主要功能:get\u template\u directory(),get\u stylesheet\u directory(),其中第一个将在主题文件夹中查找,而另一个将在子主题目录中查找 如果我们结合这些,我们可以制作一个自动装载机,它包括: public function get_instance(){ if(null == self::$_instance){ self::$_instance = new self(); }

关于WordPress,您有两个主要功能:
get\u template\u directory()
get\u stylesheet\u directory()
,其中第一个将在主题文件夹中查找,而另一个将在子主题目录中查找

如果我们结合这些,我们可以制作一个自动装载机,它包括:

public function get_instance(){
    if(null == self::$_instance){
        self::$_instance = new self();
    }

    self::$_directories = array(
        get_template_directory(),
        get_stylesheet_directory(),
    );

    return self::$_instance;
}

public function load_class($class){
    $path = str_replace('_', '/', $class);
    foreach(self::$_directories as $directories){
        if(file_exists($directories . '/' . $path . '.php')){
            require_once($directories . '/' . $path . '.php');
        }
    }
}
这些函数显然属于随后实例化的类。我们在这里所做的一切都是说,使用Folder\u SubFolder\u ClassName的命名标准来查找一个类,用“/”替换“\u”,并在末尾附加.php。没那么难

每次都有效。子主题类可以加载父主题类,父主题类可以互相调用,而不用担心
require\u once()

现在让我们在混合物中加入一些东西。假设您的主题使用自定义/包,并且其中有一个类,那么显而易见的答案是将
get\u instance()
更改为:

public function get_instance(){
    if(null == self::$_instance){
        self::$_instance = new self();
    }

    self::$_directories = array(
        get_template_directory(),
        get_stylesheet_directory(),
        get_template_directory() . '/custom/packages/'
    );

    return self::$_instance;
}
通过这种方式,应该加载一个类,比如:
PackageName\u Folder\u SubFolder\u ClassName{}
,因为它位于
custom/PackageName/Folder/SubFolder/ClassName.php
中,我们告诉自动加载程序在这三个位置查找该类

那么问题出在哪里?

我收到一个错误,说明
PackageName\u Folder\u SubFolder\u ClassName
不存在或找不到


为什么??我做错了什么,或者假设错了什么?

我假设问题是由于/location/packages的位置造成的

在load_类foreach循环中放置一个echo,该循环输出
$directories.'/'$路径。php'
。我打赌这会让你明白的。您可能需要将public_html路径硬编码到自动加载功能中