Php 在composer autoloader中找不到类

Php 在composer autoloader中找不到类,php,composer-php,Php,Composer Php,我的composer.json中有这个 { "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { "php": ">=7.0.0", "alchemy/zi

我的
composer.json中有这个

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=7.0.0",
        "alchemy/zippy": "^0.4.8",
        "barryvdh/laravel-debugbar": "^3.1",
        "fideloper/proxy": "~3.3",
        "graham-campbell/exceptions": "^10.0",
        "intervention/image": "^2.4",
        "intervention/imagecache": "^2.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "laravelcollective/html": "^5.5",
        "symfony/dom-crawler": "^3.3"
    },
    "files": [
        "vendor/redbutton/text-image-alpha/vendor/autoload.php"
    ],
    "require-dev": {
        "filp/whoops": "^2.1",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~6.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}
我的软件包的php文件位于laravel安装中:
/vendor/redbutton/text image alpha/src/

当我尝试调用一个文件时,会收到以下消息:

Class 'Class 'RedButton\TextImageAlpha\TextImageAlpha' not found' not found
我使用此命令尝试调用该类:

$image     = new \RedButton\TextImageAlpha\TextImageAlpha( 'some string' );
/vendor/redbutton/text image alpha/src/textmagealpha.php
中的文件如下所示:

<?php
namespace RedButton\TextImageAlpha;

use RedButton\TextImageAlpha\Exceptions;
use RedButton\Tools\Objects;


/**
 * TextImageAlpha class convert a text to image.
 *
 * @author Tomas Rathouz <trathouz at gmail.com>
 */
class TextImageAlpha
{
   // lots of code
}

好消息。我看了你的,你做得很好:


composer.json中删除不必要的代码
我注意到在粘贴的
composer.json
中有一些供应商文件的手动添加

"files": [
    "vendor/redbutton/text-image-alpha/vendor/autoload.php"
],
嵌套在
/vendor
中的
/vendor
没有意义,因为它可能会重复自动加载并破坏它

另外,我在
require
部分没有看到
redbutton/text image alpha
,它应该在哪里


如何以正确的方式添加包? 要安装软件包,只需调用composer即可:

composer require redbutton/text-image-alpha
就这样

它应该出现在
composer.json
中的
require
部分。Composer将根据包的
Composer.json
中的规则自动加载它


试验 我已经尝试了以下代码,并且正确地找到了类:

<?php 

require __DIR__ . '/vendor/autoload.php';

$image = new \RedButton\TextImageAlpha\TextImageAlpha('some string');
var_dump($image);

类文件(
src/textmagealpha.php
)中有什么名称空间?在composer.json中定义路径时,还需要以斜杠结尾:
“src/”
。更新composer.json文件后,不要忘了执行
composer dump autoload
。@MagnusEriksson我更新了我的问题。我已将
/
添加到src路径,但没有任何帮助。您是手动创建文件夹
/vendor/redbutton/text image alpha/src/
和所有文件,还是使用
composer require
添加它们?如果手动添加它们,“主”(顶部)编写器文件不知道这一点。Composer不会自动包括
/vendor
中的所有文件/文件夹。您需要告诉“主”编写器文件使用包编写器文件。@MagnusEriksson我已经手动创建了它,如何告诉“主”编写器文件包含我的文件夹?我应该把它放在
require
或其他地方吗?如果您手动添加它,请尝试添加
“文件”:[“vendor/redbutton/text image alpha/vendor/autoload.php”]
到主编写器文件
“autoload”
-部分并运行
编写器转储自动加载。这会让作曲家也装上自动装弹机。我的头在桌子上撞了好几天<代码>新建\PATH\TO\CLASS
成功了!我已经正确地包含了
autoload.php
,但是我的类仍然没有出现,现在我知道了原因。谢谢
{
    "require": {
        "redbutton/text-image-alpha": "^1.0"
    }
}