当前位置: 首页 > 知识库问答 >
问题:

在编写器转储自动加载后找不到类

宋嘉懿
2023-03-14


如果执行命令作曲家转储-自动加载,然后出现错误类没有找到,因为autoload_static.php改变。

我的项目结构如下:

app
-公共
------ index.php
-src
------ WordToImage.php
-供应商
------ 作曲家
------------(任意作曲家文件)
------------ autoload_static.php
--composer.json

指数php

 require_once __DIR__ . '/../vendor/autoload.php';
 use wti\src\WordToImage;

 $loader = new WordToImage();
 $loader->saveImages();

创作者json

{
    "autoload": {
        "psr-4": {
            "wti\\" : "src/"
        }
    }
} 

autoload_static.php

<?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit416f5acb57c46a86bf05d897e056b40d
{
    public static $prefixLengthsPsr4 = array (
        'w' => 
        array (
            'wti\\' => 4,
        ),
    );

    public static $prefixDirsPsr4 = array (
        'wti\\' => 
        array (
            0 => __DIR__ . '/../..' . '/src/WordToImage.php',
        ),
    );

    public static $classMap = array (
        'wti\\src\\WordToImage' => __DIR__ . '/../..' . '/src/WordToImage.php',
    );

    public static function getInitializer(ClassLoader $loader)
    {
        return \Closure::bind(function () use ($loader) {
            $loader->prefixLengthsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixLengthsPsr4;
            $loader->prefixDirsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixDirsPsr4;
            $loader->classMap = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$classMap;

        }, null, ClassLoader::class);
    }
}

当我执行命令“作曲家转储-自动加载”,然后autoload_static.php被更改

<?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit416f5acb57c46a86bf05d897e056b40d
{
    public static $prefixLengthsPsr4 = array (
        'w' => 
        array (
            'wti\\' => 4,
        ),
    );

    public static $prefixDirsPsr4 = array (
        'wti\\' => 
        array (
            0 => __DIR__ . '/../..' . '/src',
        ),
    );

    public static function getInitializer(ClassLoader $loader)
    {
        return \Closure::bind(function () use ($loader) {
            $loader->prefixLengthsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixLengthsPsr4;
            $loader->prefixDirsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixDirsPsr4;

        }, null, ClassLoader::class);
    }
}

当我启动项目时,出现了一个错误(找不到类)。请告诉我为什么这个字符串:

0 => __DIR__ . '/../..' . '/src/WordToImage.php'
'wti\\src\\WordToImage' => __DIR__ . '/../..' . '/src/WordToImage.php', 

正在删除

共有1个答案

梁丘招
2023-03-14

两件事:1。psr-4自动加载程序定义将目录数组作为命名空间的值:

{
    "autoload": {
        "psr-4": {
            "wti\\": ["src/"]
        }
    }
}
 类似资料:
  • 我启动了一个新的PHP项目,并希望使用PSR-4从composer自动加载。 项目结构如下: 这是我的作曲家。json: 这是我的ser.php 还有用户测试。php 当我运行单元测试时,我得到以下消息: 致命错误:找不到类“model\User”。

  • 我刚刚开始使用composer进行依赖关系管理,我很难弄清楚我是如何不遵守psr-4进行自动加载的,所以我来这里寻求建议。我有一个生成随机值的类,它已经在packagist上了。项目结构如下(我已将composer.json文件标记为A和B): 项目总监 composer.jsonA composer.jsonB 最后是RlandValue.php文件,它声明了ejFrancis命名空间 当我运行

  • 我不熟悉使用composer和psr-0。我尝试了一个使用composer和psr-0的小应用程序。我已经使用名称空间加载了一个特定的类。当我使用composer vendor/autoload调用一个类时,我得到了“未找到类”错误。 我的composer.json文件:/var/www/html/silexapp/composer.json 我的作曲家供应商自动加载文件:/var/www/htm

  • 我试图使用高斯,但我得到以下致命错误: 致命错误:类GuzzleHttp\ClientInterface在第13行的 /var/www/myapp/vendor/guzzlehttp/guzzle/src/functions.php中找不到 我正在使用composer autoloader自动加载: 发生了什么事? 编辑 我的composer.json: 编辑2 我的作曲家。锁 编辑3 编写器配置

  • 我遇到了使用作曲家psr-4自动加载功能和PHPUnit的问题。问题发生在我的本地机器以及TravisCI版本上。单元测试无法找到我的类,而普通脚本可以找到。 当然,任何配置都有问题,但我无法找出我做错了什么。提前感谢你的帮助。 这是我的项目文件结构: 公共/ src/ http/ urlhelper。php 小黑 超文本传输协议/ urlhelper.test.php 这是我的作曲家的作品。js

  • 不知何故,我无法让自动加载正常工作。我正在为phpunit使用以下引导文件。 这个的输出显示,据我所知,注册应该是正常的。 不知怎的,我犯了以下错误。 在myproj文件夹src/test/unit/-DefaultDomainEventTest中,我的文件夹结构如下所示。php-bootstrap。php示例/-NotificationCountChangedEvent。php Notifica