Composer PSR-4 自动加载“找不到类”调试

2024-04-17

是的,另一个关于“找不到类”错误的问题。要么是我遗漏了什么,要么是我误解了 PSR-4 逻辑。

我的作曲家库目录结构:

“扫描仪”=>“src”=>“Test.php”

Test.php

namespace MyNS;

class Test
{
}

作曲家.json

"autoload": {
        "psr-4": {
            "MyNS\\": "src/"
        },
}

因此,现在我使用 Composer 将库加载到我的项目中并尝试使用它。

require_once("../vendor/autoload.php");

$test = new MyNS\Test();

这总是导致

“致命错误:未捕获错误:未找到类‘MyNS\Test’。”

。我缺少什么?我已经盯着这个看了好几天了。我更改了文件夹,更改了文件夹名称,将上层更改为下层,反之亦然。似乎什么都不起作用。

我正在使用 PHP 7.2.2 和 Composer 版本 1.2.2

甚至尝试过这个:

require_once("../vendor/autoload.php");

use MyNS\Test;

$scanner = new Test();

Update

我调试了 Composer ClassLoader.php 文件 (findFileWithExtension($class, $ext)) 方法,显然我的文件从未加载,因为我得到了 echo“Done”和 die();在此方法的末尾,这意味着找不到该文件,因此未加载该文件。我的composer.json 有什么问题吗?

{
    "name": "test/test",
    "type": "library",
    "description": "",
    "keywords": ["php"],
    "homepage": "",
    "license": "MIT",
    "authors": [
        {
            "name": "",
            "email": "",
            "homepage": "",
            "role": ""
        }
    ],
    "require": {
        "php": ">=7.2.2"
    },
    "autoload": {
        "psr-4": {
            "MyNS\\": "src/"
        }
    }
}

要调试正在发生的情况,请打开ClassLoader.php文件然后去哪里findFileWithExtension()方法被定义为添加一个echo陈述:

# vendor/composer/ClassLoader.php:386

foreach ($this->prefixDirsPsr4[$search] as $dir) {
    if (file_exists($file = $dir . $pathEnd)) {
        return $file;
    }
    // Add this line
    echo $file, PHP_EOL;
}

不要做composer dumpautoload在您手动修改上述文件后,直到我们完成。

现在,通过执行 PHP 文件,您将在输出的开头看到类似的内容:

path/to/project/vendor/composer/../../src/Test.php

这是:

path/to/project/src/Test.php

这就是作曲家正在寻找的文件,并且应该包含如下内容:

namespace MyNS;

class Test { }

如果包含文件时出现问题,则意味着您必须关心三件事:

  1. 路径和文件名
  2. 文件中使用的命名空间
  3. 文件中使用的类名(类名应与文件名相同)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Composer PSR-4 自动加载“找不到类”调试 的相关文章

  • PHP 文件由浏览器下载,而不是由本地开发服务器(MAMP)处理

    一切都很顺利 直到我添加AddHandler application x httpd php5s php到本地服务器文档根目录中的 htaccess 文件 根据我正在使用的站点 我经常更改该文件 因为我访问时这样做了http 本地主机 88
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 如何使用图像生成 SVG 二维码?

    我有一个用于生成 jpeg 和 png 格式的 qrcode 的代码 但也想在 PHP 中生成带有背景图像的 svg qrcode 我正在使用 qrlib php 生成 jpeg 和 png 格式 QRlib php 也支持 SVG 不是吗
  • 用于添加和删除客户名称的 Web 表单出现问题

    我正在尝试创建一个 Web 表单 其中列出了所有客户 然后为您提供一个文本字段 旁边有一个按钮 您可以在其中添加客户 然后它应该显示客户列表 旁边有删除按钮 您可以单击该按钮从数据库中删除客户 我正在让它发挥作用 对于初学者来说 它会回显
  • 使用ajax发送表单数据

    我想用 ajax 以表单形式发送所有输入 我有一个这样的表单
  • 某些表格后的分页符

    我的问题是 我有一个页面 其中包含几个要打印的 html 表格 有些表有很多行 有些则没有 我想要做的是将第一个和第二个表 大表 打印在单独的页面中 其余表 小表 每页打印两个 如何在我想要的位置放置分页符 我试过 但这会在每个表格后面添加
  • Laravel 6:尚未设置外观根

    经过一段时间的努力 我已将我的网站从 Laravel 5 8 迁移到 Laravel 6作曲家更新我在网站上遇到此错误 并且仅使用命令PHP工匠 PHP Fatal error Uncaught RuntimeException A fac
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • YouTube 频道 URL 的正则表达式

    如何使用 REGEX 验证 YouTube 频道 URL 我发现了这个模式 但它不能正常工作 http https www youtube com channel user a zA Z0 9 1 谁能帮我 你的问题是之后的额外管道user
  • fsockopen() 和 SSL 出错,“无法启用加密”

    我正在尝试连接到 Nominet EPP 测试台 但收到 无法启用加密 的消息 这似乎是一个罕见的错误 没有记录的解决方案或原因 用行 socket fsockopen ssl testbed epp nominet org uk 700
  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • PHP date_sun_info 错误时间

    我正在尝试使用 PHPdate sun info函数获取全天太阳某些位置的时间信息 目前我正在使用类似于中的代码文档 http php net manual en function date sun info php sun info da
  • 为什么 http://localhost/ 不使用 WAMP 加载任何内容?

    我最近尝试安装 WAMP 但发现没有页面加载 它还有一个橙色的 W 标志 如果这有什么意义的话 它确实说 托盘图标 WAMP服务器已上线尽管 我也做了一些研究 发现 Skype 可能会引起问题 所以我删除了使用端口 80 和 443 作为传
  • 一个表单包含两个提交按钮,每个按钮都有不同的操作

    我花了几个小时试图找到问题的解决方案 但似乎找不到正确的解决方案 提前感谢你的帮助 我有一个 html 表单
  • PHP 中的多行字符串文字

    考虑 xml l xml vv echo xml 这将回响vv 为什么以及如何为诸如此类的事情执行多行字符串文字简单XML https en wikipedia org wiki SimpleXML etc Well xml l vv Wo
  • 重定向到另一个文件夹

    我读了这个 htaccess 重写以将根 URL 重定向到子目录 https stackoverflow com questions 990392 htacces rewrite to redirect root url to subdir
  • 如何在刀片模板中通过引用 @include 来传递变量?

    在 Laravel 4 2 设置中 我在模板中有一个变量 我希望在多个包含之间共享该变量 主刀 This is the variable include header lt in header blade I often use tabin
  • Laravel 更新雄辩事件:获取数据

    我一直在读有关雄辩事件的文章 与模型的每次交互都有一个事件 创建 创建 更新 更新 保存 保存 删除 删除 恢复 恢复 我想知道模型更新后的数据以及之前的数据 是否可以 因为文档没有太多关于如何使用这些事件的信息 您正在寻找getDirty
  • 测验程序的 MySql 数据库设计

    我目前正在开发一个项目 主要是创建一个测验应用程序 它将能够进行包含 10 到 20 个问题的多项选择题或简答题的测验 它需要能够根据正确答案检查用户的答案 然后对用户的答案进行评分 稍后 我可能会实现一个后端功能来在线创建测验 但现在我将
  • Symfony2 dev环境可以工作,prod环境给出404错误

    我最近在我的机器上成功安装了 Symfony2 我可以访问http localhost app dev php 开发环境 但是 当我尝试访问 prod 环境时 http localhost app php 我在浏览器中收到以下错误消息 哎呀

随机推荐

  • 如何从 Java 系统设置中获取代理设置

    我正在寻找如何在 Windows 下使用 Java 获取系统代理信息的方法 但我只找到了一种方法 但这对我不起作用 public static void main String args throws Throwable System se
  • 红宝石数组内部结构

    ruby 数组内部是如何实现的 主要是在 CRuby 中 但欢迎任何其他信息 它们是像 C 向量一样可增长的数组还是基于列表的 移位 取消移位以及通过索引访问元素的复杂性是多少 它们是可增长的数组 在最后增长 shift is O 1 un
  • hive中每行的百分比计算

    我在配置单元中有一个具有以下架构的表 差值 int 计数值 int 值为 5 2 30 1 90 1 100 1 现在我想找到每个 count value 与 count value 总和的百分比 每行的值类似于 count value s
  • 终止设备上的调试

    我对设备上的调试有点困惑 当我使用模拟器时 在调试会话之后 我只需关闭模拟器窗口 但是在我的设备上调试时 如何关闭会话 只需断开 USB 电缆即可 并且安装的 apk 由Eclipse安装 应该手动删除 您可以通过转到 调试 视角 右键单击
  • 当 readdir() 返回文件名时,stat() 错误“没有这样的文件或目录”

    我无法识别 stat 引发的错误 下面的程序读取目录中的所有文件并打印文件名 DIR dp struct dirent dirp struct stat sb if dp opendir argv 1 NULL perror can t o
  • WPF - MVVM - 组合框选定项

    I have ViewModel 实施的INotifyPropertyChanged 在后台和类中Category它只有一个 type 属性string 我的 ComboBox SelectedItem 绑定到类别的实例 当我更改实例的值时
  • 如何更改导航视图中的分隔符颜色?

    我正在尝试使用 NavigationView 来实现 NavigationDrawer 我通过在菜单中设置组 ID 添加了分隔符 但是我看不到分隔符 我想这是因为分隔符颜色与背景相同 所以我想改变分隔符的颜色 但我找不到办法改变它 谁能帮我
  • 如何迭代大型输入文件?

    我正在尝试访问通过输入字段上传的文件内容的迭代器 我可以通过 web sys 将 JS 文件传递 到 Wasm 中 但是我一生都无法弄清楚如何访问 Rust 中传递的文件的长度和名称之外的任何内容 我想我可以将整个文件作为 ByteArra
  • Windows npm 中的 Glob 通配符

    我试图让 npm 在脚本文件夹上构建 browserify 问题是 我在 Windows 上 执行folder js 似乎不起作用 我尝试过全局安装 glob 但每当我运行构建命令时 都会返回错误 提示 找不到模块 c www projec
  • 如何从 Web 服务响应中读取 HTTP 响应标头?

    如何从 C 中的 Web 服务响应中读取 HTTP 响应标头 在深入研究 MSDN 之后 我所需要做的就是覆盖GetWebResponse方法 然后我可以访问响应头 public class MyWSProxy HttpWebClientP
  • 执行多尺度训练(yolov2)

    我想知道多尺度训练如何YOLOv2 https arxiv org pdf 1612 08242 pdf works 论文中指出 原始YOLO使用的输入分辨率为448 448 通过添加锚框 我们将分辨率更改为416 416 然而 由于我们的
  • CodeIgniter:帮助从网页获取元标记的类/库?

    我正在使用代码点火器 我想我使用哪个 php 框架并不重要 但在我编写自己的类之前 已经编写了另一个类 该类允许用户获取任何站点的页面标题和元标记 关键字 描述 如果有的话 任何能够做到这一点的 PHP 类都很棒 谢谢大家 你应该看看这个类
  • 如何设置文本字段字符限制 SwiftUI?

    我正在使用 SwiftUi 版本 2 进行应用程序开发 我遇到了 SwiftUI 中可用文本字段的问题 我不想再使用 UITextField 了 我想限制文本字段中的字符数 我搜索了很多 找到了一些与此相关的答案 但这些答案不适用于 Swi
  • Docker:基础镜像

    我试图理解 Docker 概念 但我无法理解一件事 据我了解 镜像 即容器 可以从不同的 Linux 发行版实例化 例如 Ubuntu CentOS 等 假设我在主机上运行标准 Ubuntu 14 04 What happens if I
  • 卷曲总是返回 false

    下面的代码总是回显 false 我错过了什么吗 url https www google nl ch curl init curl setopt ch CURLOPT URL url curl setopt ch CURLOPT RETUR
  • 找不到如何使用 HttpContent

    我正在尝试使用HttpContent HttpContent myContent HttpContent Create SOME JSON 但我没有找到定义它的 DLL 首先 我尝试添加对Microsoft Http也System Net
  • Scrapy 使用带有规则的 start_requests

    我找不到任何使用 start requests 与规则的解决方案 我也没有在互联网上看到任何关于这两个的示例 我的目的很简单 我想重新定义 start request 函数以获得捕获请求期间所有异常的能力 并在请求中使用元 这是我的蜘蛛的代
  • 结果在同一个文件夹中

    我尝试执行以下命令来对文件夹内找到的数据进行分析 但是 它将它们保存在我执行该行的文件夹中 如何将结果保存在文件所在的文件夹中位于 sed n 14 71p fastqc fastqc txt awk print 1 2 awk sum 2
  • 如何在golang中$push嵌套数组?

    我尝试使用以下方法将一些数据推送到嵌套数组中 push 这是我的 json 文件 id ObjectId 57307906f051147d5317984e user firstName chetan lastName kumar age 2
  • Composer PSR-4 自动加载“找不到类”调试

    是的 另一个关于 找不到类 错误的问题 要么是我遗漏了什么 要么是我误解了 PSR 4 逻辑 我的作曲家库目录结构 扫描仪 gt src gt Test php Test php namespace MyNS class Test 作曲家