【问题标题】:composer PSR-4 autoloader "class not found" error作曲家 PSR-4 自动加载器“找不到类”错误
【发布时间】:2018-09-03 17:46:32
【问题描述】:

我尝试添加项目目录路径中不存在的DieEcho 类。但是当我尝试在 index.php 文件中实现类时得到错误。:

致命错误:未捕获的错误:在 /home/j/Projects/project84/public/index.php:8 中找不到类 'Trzczy\Debug\DieEcho' 堆栈跟踪:在 /home/j 中抛出 #0 {main} /Projects/project84/public/index.php 第 8 行



目录树是这样的:

├── debug
│   └── php
│       └── DieEcho.php
└── project84
    ├── composer.json
    └── public
        └── index.php



我运行composer dump-autoload,所以出现了 autoload_psr4.php 中的条目:

j@debian:~/Projects/project84$ cat ../../vendors/project84/composer/autoload_psr4.php 
<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir)).'/Projects/project84';

return array(
    //(...)
    'Trzczy\\Debug\\' => array($baseDir . '/../debug/php'), //the entry
    //(...)
);
j@debian:~/Projects/project84$ 



DieEcho.php 类:

j@debian:~/Projects/project84$ cat ../debug/php/DieEcho.php 
<?php

namespace Trzczy\Debug;
class DieEcho
{
    //(...)
}
j@debian:~/Projects/project84$ 



我尝试以这种方式实现 index.php 中的类:

j@debian:~/Projects/project84$ cat public/index.php 
<?php
use Zend\Mvc\Application;
use Zend\Stdlib\ArrayUtils;
use Trzczy\Debug\DieEcho;

error_reporting(-1);
ini_set('display_errors', true);
new DieEcho;
    //(...)



更新

composer.json

j@debian:~/Projects/project84$ cat composer.json 
{
    "config": {
        "vendor-dir": "../../vendors/project84"
    },
    //(...)
    "autoload": {
        "psr-4": {
            "Application\\": "module/Application/src/",
            "Trzczy\\Debug\\": "../debug/php/"
        }
    },
    //(...)
}
j@debian:~/Projects/project84$ 

我做错了什么?这是在 zend framework 3 项目中,但我不知道这些信息是否重要。

【问题讨论】:

  • 您的作曲家文件是什么样的?
  • @MagnusEriksson 我刚刚更新了。原谅
  • 您实际上在哪里包含作曲家autoload.php 文件?
  • 您的回答确实帮助了我。原因是 autoload.php 的包含放在类实现之后。当我在包含autoload.php 之后移动实施时,它成功了。谢谢。

标签: php namespaces zend-framework3 autoloader psr-4


【解决方案1】:

原因是 autoload.php 的包含放在类实现之后。当我在包含autoload.php 之后移动实施时,它成功了。感谢@Magnus Eriksson 的评论。

【讨论】:

    猜你喜欢
    • 2017-01-02
    • 2019-01-31
    • 1970-01-01
    • 2016-10-24
    • 2016-03-31
    • 2017-05-16
    • 1970-01-01
    • 2017-01-27
    • 2015-07-20
    相关资源
    最近更新 更多