'spl_autoload_register'的'include'找不到路径

The 'include' of 'spl_autoload_register' can't find the path

我可以将 class 与 includeuse 一起使用,但我使用 spl_autoload_register 失败了。

我尝试了不同的方法都没有成功。

什么工作正常:

include "MesProduits/Produit.php";
use MesProduits\Produit;

function monAutoLoad() {
    include "MesProduits/Produit.php";
} 
spl_autoload_register('monAutoload'); 
use MesProduits\Produit;

但是下面的代码失败了:

function monAutoLoad($class) { 
    include  "MesProduits/" . $class . ".php"; 
} 
spl_autoload_register('monAutoload');
use MesProduits\Produit;

spl_autoload_register(function ($class) {
    include 'MesProduits/' . $class . '.php';
});
use MesProduits\Produit;

问题是 use 需要 spacename 的反斜杠,而 include 需要斜杠我有 类 的 file.php 的路径。 我在 MacOS X 上阅读 Mac 会产生此类问题。

解决方案是使用 str_replace\ 转换为 / .

function monAutoLoad($class) {
    include(str_replace("\", "/", $class). ".php");
}

spl_autoload_register('monAutoLoad');

use MesProduits\Produit;