gpt4 book ai didi

php - 使用命名空间进行自动加载

转载 作者:行者123 更新时间:2023-12-04 17:00:25 24 4
gpt4 key购买 nike

所以我得到了一小段自动加载类的代码。一切顺利,直到我添加命名空间。我得到它找不到类的错误。但是当我删除命名空间时,它又可以工作了。 (当我直接包含 wbp.Foo.php 时它也有效。)

自动加载器.php

<?php

function autoloadLib($className){
$filename = "lib/wbp." . $className . ".php";
if(is_readable($filename)){
require $filename;
}
}

spl_autoload_register("autoloadLib");

索引.php
<?php

include "autoloader.php";
use Foobar\Foo;
echo Foo::Bar();

lib/wbp.Foo.php
<?php

namespace Foobar;

class Foo {
public static function Bar(){
return "foobar";
}
}

最佳答案

在自动加载中,$className变量包括命名空间。您需要将类移动到包含命名空间的文件/文件夹结构中,或者从类名中删除命名空间并仅基于类加载。我建议前者只是因为 namespace 的全部意义在于允许具有相同名称的两个不同的类定义。在磁盘上的同一空间中,您不能真正拥有两个具有相同名称的文件。重命名 $className可以像 str_replace('\\', '.', $className) 一样简单并将您的类(class)重命名为 wbp.NameSpace.ClassName.php .

关于php - 使用命名空间进行自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com