PHP-将类自动加载到我的视图中 目标

PHP-将类自动加载到我的视图中 目标,php,Php,在“我的视图”中使用帮助程序,而不使用包含或要求类 问题 我的观点是使用一些助手来执行多种必要的操作。例如,我现在拥有的: App\Helpers\Words::Has('orange', $cocktail); // returns 'true' 但是我不再需要使用“App\Helpers”。我只想使用Words::Has[…]。如果我省略了应用程序/帮助程序,则会发生以下情况: 警告:require_once(.php):无法打开流:第10行Autoload.php中没有此类文件或目录 我

在“我的视图”中使用帮助程序,而不使用
包含
要求

问题 我的观点是使用一些助手来执行多种必要的操作。例如,我现在拥有的:

App\Helpers\Words::Has('orange', $cocktail); // returns 'true'
但是我不再需要使用“
App\Helpers
”。我只想使用
Words::Has[…]
。如果我省略了
应用程序/帮助程序
,则会发生以下情况:

警告:require_once(.php):无法打开流:第10行Autoload.php中没有此类文件或目录

我已经试过什么了 在呈现视图的控制器中,我已尝试将其放入标头的范围:

use App\Helpers\Words;
但不幸的是,没有成功——什么都没有发生

有人能给我一个主意吗

autoloader.php
这是您的
Autoloader
,您正在使用
Words::Has()
,并且正在自动加载函数参数的
$class
变量中传递类名
Words
。那么,让我们看看发生了什么:

spl_autoload_register(function ($class) {

    $classMatrix = explode('\\', $class); // = $classMatrix = explode('\\', 'Words');
    // Result is $classMatrix = Array ( [0] => Words )

    array_shift($classMatrix); // removes and returns first element from the array
   // Result is $classMatrix = Array ( )

    $finalClass = implode('/', $classMatrix); // $finalClass is empty

    require_once $finalClass . '.php'; // = require_once '.php';
});
如果需要,您可以为助手注册一个单独的
自动加载程序

spl_autoload_register('load_helper');
function load_helper($class) {
    require_once 'app/helpers/' . $class . '.php';
}
因此,您现在可以使用

Words::Has(...);

尝试使用绝对路径。您的自动加载器可能试图从错误的文件夹中找到
Helpers\Words.php
。您能给我建议一种使用绝对路径的方法吗?我的意思是,我不明白如何在这种情况下应用它。我现在可以看到错误。无论如何,我认为在我的案例中创建一个单独的自动加载器是不可行的——如果有一个实体比helper多呢?顺便说一下,谢谢你的帮助!欢迎@guilhermoderdenge!这是使用多个自动加载器(
app/controllers
app/models
app/views
)的常见做法(我已经看到),但您也可以添加include path或任何适合您需要的内容。顺便说一句,你可以使用。
Words::Has(...);