Файловая структура в пакете PHP composer с PHPSpec - PullRequest
0 голосов
/ 11 октября 2018

У меня был рабочий пакет композитора с отдельными файлами и одним классом.Итак, теперь я пытаюсь изменить пакет так, чтобы он больше походил на SOLID.

У меня есть такая файловая структура ...

PackageName.php
addresses.php
names.php
interfaces
    names.php
    addresses.php

Когда я использую методы PHPSpecв основном PackageName.php проверяются, но в одном из методов у меня есть что-то вроде ...

namespace blah\PackageName;

use blah\PackageName\ProcessNames;

class PackageName
{
    public function formatData($user)
    {
        $place_holders = array();
        $place_holders = ProcessNames::process_name($user, $place_holders);
        $place_holders = ProcessAddresses::process_address($user, $place_holders);
        return json_encode($place_holders);
    }
}

, которое выдает ошибку ...

48!должен сделать исключение адреса [err: Error ("имя класса" blah \ PackageName \ ProcessNames 'not found ")] было выдано.

composer.json похож на ...

{
    "name": "blah\PackageName",
    "description": "Format data.",
    "require": {
        "nesbot/carbon": "^1.34",
        "php": ">7.0.0"
    },
    "require-dev": {
        "phpspec/phpspec": "^4.3"
    },
    "authors": [
        {
            "name": "me",
            "email": "me@emailaddress.com"
        }
    ],
    "autoload": {
        "psr-4": {
            "blah\\PackageName\\": "src/",
            "spec\\blah\\PackageName\\": "spec/"
        },
        "files": {
            "src/interfaces/names.php",
            "src/names.php"
        }
    }
}

Я не вижу, как включить файлы в пакет.Я не уверен, что мне нужна часть "files" в composer.json, но я пытаюсь понять, как это сделать.Любая информация высоко ценится.

1 Ответ

0 голосов
/ 11 октября 2018

Это та же самая проблема, которая была у кого-то еще сегодня!Простая ошибка.

Заменить:

namespace blah\PackageName;

на:

namespace blah;

Полное имя класса включает пространство имен и имя класса.Так что, по сути, ваш класс на самом деле был экземпляром blah\PackageName\Packagename

Возможно, вы извлечете Packagename из composer.json, в зависимости от ваших потребностей, и если вы его измените, не забудьте запустить composer dumpautoload

...