Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未找到编写器PSR-4自动加载类_Php_Namespaces_Composer Php_Autoload_Psr 4 - Fatal编程技术网

Php 未找到编写器PSR-4自动加载类

Php 未找到编写器PSR-4自动加载类,php,namespaces,composer-php,autoload,psr-4,Php,Namespaces,Composer Php,Autoload,Psr 4,我已经绞尽脑汁想了几个小时,想弄明白为什么自动加载不能用于“Authentication\auth()”。“dBase\db()”类正在加载,但我得到了: 错误:在中找不到类“Authentication\auth” /第8行的var/htdocs/dev/test.php 调用test.php时 Root composer.json- "require": { "geeshoe/dbClass": "dev-develop", "geeshoe/authClass": "

我已经绞尽脑汁想了几个小时,想弄明白为什么自动加载不能用于“Authentication\auth()”。“dBase\db()”类正在加载,但我得到了:

错误:在中找不到类“Authentication\auth” /第8行的var/htdocs/dev/test.php

调用test.php时

Root composer.json-

  "require": {
    "geeshoe/dbClass": "dev-develop",
    "geeshoe/authClass": "dev-master"
  },
  "autoload": {
    "psr-4": {
      "dBase\\": "vendor/geeshoe/dbclass/",
      "Authentication\\": "vendor/geeshoe/authClass/"
    }
  }
authClass.php头文件-

<?php
namespace Authentication;

use dBase\db;

class auth extends db
{

如果有人能向我指出显而易见的事情,那就太好了。另一方面,出于测试目的,authClass->composer.json文件中没有指定自动加载。

这里的问题是,实际上您没有使用PSR-4。在PSR-4中,类名应与文件名匹配。对于
db
类来说,这很好,因为db类位于
db.php
文件中,而
auth
类位于
authClass.php
文件中,这就是问题所在。您应该将文件名更新为
auth.php

您可能需要运行:

composer dump-autoload

还请记住,在实际软件包中,一个供应商软件包有一个名称空间,因此您不会为单个软件包创建多个名称空间,而只创建一个名称空间。
vendor/
中的任何内容都是由composer创建/控制的,并且应该已经定义了自己的自动加载配置。不要在
composer.json
中为它们添加条目。2.请勿在
供应商/
内创建或修改任何内容,只有composer本身才应触摸此文件夹及其任何内容。您的代码应该位于项目文件夹中的其他位置,例如:
src/
lib/
@Sammitch谢谢您提供的信息。这两个类都在开发中,尚未准备好生产,因此没有在各自的composer.json文件中配置自动加载..Nabialek谢谢,这就是我要找的。我一直认为PSR-4自动加载是通过名称空间绑定的,而不是通过类名和文件名绑定的。PSR-4中的“类名应该与类名匹配”@jax,已修复。很高兴我能帮忙
composer dump-autoload