'spl_autoload_register'的'include'找不到路径
The 'include' of 'spl_autoload_register' can't find the path
我可以将 class 与 include 和 use 一起使用,但我使用 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;
我可以将 class 与 include 和 use 一起使用,但我使用 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;