Composer & Parsedown - класс 'UserFrosting\\Parsedown' не найден

Мне удалось установить Parsedown с помощью composer с

    "require": {
        ...
        "erusev/parsedown": "^1.6"
    },

и добавил путь к классу в раздел автозагрузки

"autoload": {
    "classmap" : [
        "controllers", "middleware", "models", "plugins", "vendor/erusev/parsedown"
    ]
}

Но когда я пытаюсь выполнить эту строку...

    $Parsedown = new Parsedown();

... Я получаю эту ошибку:

Класс 'UserFrosting\Parsedown' не найден

Запуск php composer.phar dump-autoload не помог.

Что мне здесь не хватает? Почему Parsedown ожидается в UserFrosting - UserFrosting\ Parsedown?

Вот полный composer.json:

{
    "name": "userfrosting/UserFrosting",
    "type": "project",
    "description": "A secure, modern user management system for PHP.",
    "keywords": ["php user management", "usercake", "bootstrap"],
    "homepage": "https://github.com/userfrosting/UserFrosting",
    "license" : "MIT",
    "authors" : [
        {
            "name": "Alexander Weissman",
            "homepage": "https://alexanderweissman.com"
        }
    ],
    "require": {
        "birke/rememberme" : "1.0.4",    
        "illuminate/database" : "5.0.33",
        "league/csv": "8.1.*",
        "nikic/php-parser" : "~1",
        "php" : ">=5.4.0",
        "phpmailer/phpmailer" : "5.2.10",        
        "twig/twig" : "~1.0",
        "slim/slim" : "2.*",
        "slim/views" : "0.1.3",
        "userfrosting/fortress" : "1.*",
        "wikimedia/composer-merge-plugin": "~1",
        "components/highlightjs": "9.8.0",
        "aws/aws-sdk-php": "3.*",
        "erusev/parsedown": "^1.6"
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "plugins/*/composer.json"
            ],
            "recurse": true,
            "replace": false,
            "merge-dev": true,
            "merge-extra": false
        }
    },
    "autoload": {
        "classmap" : [
            "controllers", "middleware", "models", "plugins", "vendor/erusev/parsedown"
        ]
    }
}

1 ответ

Решение

Похоже, вы пытаетесь выполнить эту строку кода $Parsedown = new Parsedown(); в классе с пространством имен UserFrosting,

Либо добавить use блок в верхней части вашего php-файла, вот так: use Parsedown; (это должно следовать после объявления пространства имен), или введите обратную косую черту перед именем класса, когда вы его используете, например: $Parsedown = new \Parsedown();, Последний начнет искать этот класс в корневом пространстве имен.

Вам не нужно добавлять этот класс в раздел карты автозагрузки composer.json файл. Если пакет извлекается композитором, он автоматически добавит все в автозагрузчик после запуска dump-autoload.

Другие вопросы по тегам