我被困在作曲家的实施中。我不了解自动加载的形成。我将绘制文件目录的草图,然后人们告诉我如何将类的目的地组成自动加载:
|---------src/
| |-----bitm/
| | |---person/
|person.php
| | |---Age/
|age.php
| |-----vendor/
|----composer
|autoload.php
| |
| |composer.json
| |
| |index.php
以上结构是我在Web服务器中的文件夹结构。
以下代码适用于composer.json
{
"autoload":{
"psr-4":{
"bitm\\person" : "src"
}
}}
以下代码适用于index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Greeting</title>
</head>
<body>
<?php
/*function __autoload($className){
//var_dump($className);
include_once($className.".php");
}*/
include_once("vendor/autoload.php");
use bitm\person\person;
use bitm\age\age;
$mamun=new person('Mamun');
$age=new age(24);
$mamun->greeting();
$age->personAge();
?>
</body>
</html>
我为person使用了名称空间.php是bitm \ person 我用age.php是bitm \ age。
我的问题是你们为什么要显示
致命错误:班级&#39; bitm \ person \ person&#39;在第18行的C:\ xampp \ htdocs \ basis_mamun_ewu \ Mamun \ src \ index.php中找不到
答案 0 :(得分:1)
如果我正确读取您的ASCII艺术,您有四个错误:
composer.json
位于src
目录中。没关系,但与自动加载相关的任何路径都与composer.json
文件的位置有关,并且您的自动加载路径中有src
- 错误。您要加载的代码位于bitm
目录。composer validate
以查看此错误,可能还有更多错误。正如您已经使用内部反斜杠所做的那样,它必须以JSON进行转义,因此它应该显示为"bitm\\person\\"
。bitm\person\person
和一个前缀bitm\person
,那么该类名的其余部分为person
,将转换为路径person.php
并假设在您提供的目录中在composer.json
文件中。我已经提到src
错了,但作为示例:Composer会尝试加载文件src/person.php
(相对于composer.json
的位置)。Age
,但正在使用名称空间age
。这不符合。始终在任何地方使用相同的案例。另请注意,您为bitm\person
创建了前缀,但未为bitm\age
创建前缀,因此您无法自动加载年龄类。您可以在自动加载部分中使用多个前缀,或使用更通用的bitm
前缀来捕获所有类。