首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我无法使用psr-4自动加载我的类

我无法使用psr-4自动加载我的类
EN

Stack Overflow用户
提问于 2015-10-05 01:02:26
回答 3查看 64关注 0票数 1

我正在学习使用psr-4自动加载我的calss,但我没有运气,这是我的文件夹结构

下面是我的"Employee.php“中的代码

代码语言:javascript
运行
复制
   namespace app\Employee;


class Employee
{
   public function __construct(){
       echo "hello employee";

   }

}

在我的index.php中

代码语言:javascript
运行
复制
use app\Employee;


  $emp = new Employee;

这是我的composer.json

代码语言:javascript
运行
复制
{
  "autoload": {
    "psr-4": {
       "Employee\\":"app/Employee"
    }
  }
}
EN

回答 3

Stack Overflow用户

发布于 2015-10-05 04:32:38

您当前的autoloader期望"Employee“名称空间映射到"app/Employee/”目录中。

在您的设置中,您需要添加index.php

代码语言:javascript
运行
复制
use Employee\Employee;

$emp = new Employee();

Employee.php的实际名称空间为:

代码语言:javascript
运行
复制
namespace Employee;

class Employee {}
票数 -1
EN

Stack Overflow用户

发布于 2015-10-05 05:10:00

变化

代码语言:javascript
运行
复制
use app\Employee;

$emp = new Employee;

至:

代码语言:javascript
运行
复制
use Employee\Employee;

$emp = new Employee();
票数 -1
EN

Stack Overflow用户

发布于 2015-10-06 01:35:18

Employee.php中的代码

代码语言:javascript
运行
复制
namespace app\Employee;

如果你想访问这个类,就必须使用这个命名空间。

Composer中的PSR-4如下所示:

代码语言:javascript
运行
复制
"autoload":{"psr-4": { "Namespace\Prefix":"a/path"}}

当加载类"Namespace\ Prefix \ class“时,Composer将看到PSR-4条目,并比较加载的类是否以该前缀开头。确实是这样!现在,它从类名中删除检测到的前缀,并将其余部分视为相对于"a/ path“的路径和文件名。

因此,该类的其余部分是" class ",因为没有留下反斜杠,所以它直接是文件名"Class.php“(注意文件名的大写)。此文件在"a/path/Class.php“中搜索。

对于您的情况,您几乎做对了所有事情-唯一的事情是:您在composer.json中的名称空间前缀不是Employee\ -您在上面的代码中给出了正确的前缀。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32936017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档