Вчера и сегодня с утра всё было нормально. Но в какойто момент, я не заметил когда, NetBeans начел жаловатся -"Namespace declaration name doesn't correspond to current directory structure". Везде, даже в файлах созданые Composer-ом. Моя система, если что: Manjaro Linux KDE Plasma Version: 5.23.3 KDE Frameworks Version: 5.88.0 Qt Version: 5.15.2 Kernel Version: 5.10.79-1-MANJARO (64-bit) XAMPP 8.1.0-0 - Apache 2.4.51 - MariaDB 10.4.22 - OpenSSL 1.1.1l - PEAR 1.7.1 - PHP 8.1.0 - phpMyAdmin 5.1.1 Apache NetBeans IDE 12.4 Java: 17.0.1; OpenJDK 64-Bit Server VM 17.0.1+12 Runtime: OpenJDK Runtime Environment 17.0.1+12 В Tools> Options> Editor> Hints опции стоят на PSR-4. Из возможных причин - Я сегодня внёс изминения в composer.json PHP: "name": "hgpd/cryptoriot", "autoload": {"psr-4": {"hgpd21\\": "vendor/hgpd21/core", "app\\": "app"}}, "require": {} Добавил core в "vendor/hgpd21/core" И произвёл composer dump-autoload в консоле. Может кто знает как исправить. А то я подумываю снести проект на фиг и переписать всё снуля...
composer складывает в папку vendor сторонние пакеты. Любое ручное вмешательство выходит боком. Поэтому вопрос: зачем тебе понадобилось добавлять что-то про autoload стороннего пакета? Он сам должен заботиться об этом. Если это твой локальный пакет, то тебе надо его опубликовать на packagist.org чтобы он попадал в vendor. Иначе ему там не место.
В общем история болезни, по шагам: *открываю доступ к папке /usr/local/bin Код (Text): sudo chmod 777 /usr/local/bin Открываю терминал в этой папке и ставлю composer PHP: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" В терминале проверяю запуск командой Код (Text): composer.phar Получаю PHP: ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.2.1 2021-12-22 22:21:31 и так далее... Тоесть, эта часть должна быть нормальной. Далее. Запускаю XAMPP, запускаю NetBeans, создаю новый проект. На этом шаге ни чего не выбираю. Тут у меня сомнения может мне надо установить Symfony? У меня Symfony не установлина. Далее. Тут, я так понимаю, можно указать зависимости которые будут прописаны в "require": {} в composer.json. Это я тоже пропускаю. Создаю одну папку app. Создаю composer.json Пишу в composer.json следующий код: PHP: { "name": "hgpd/cryptoriot", "autoload": {"psr-4": {"app\\": "app"}}, "require": {} } Открываю терминал в NetBeans через Tools> Open in Terminal Пишем команду Код (Text): composer.phar install Получаем: Код (Text): [htdocs]$ composer.phar install No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information. Loading composer repositories with package information Updating dependencies Nothing to modify in lock file Writing lock file Installing dependencies from lock file (including require-dev) Nothing to install, update or remove Generating autoload files [htdocs]$ Как мы видим composer.lock создан vendor саздана Открываем ClassLoader.php папке vendor/composer И что мы видим?.. - Пространство имен не соответствует текущей структуре каталогов. Где я накасячил? --- Добавлено --- скрины можно скачать с моего гогла тут
Дополнение - Подсказка выдала следующее: Enable HTML error checking for all files of the text/x-php5 mimetype Change project default to HTML 3.2 Change project default to HTML 4.0 Strict Change project default to HTML 4.0 Transitional Change project default to HTML 4.0 Frameset Change project default to HTML 4.01 Strict Change project default to HTML 4.01 Transitional Change project default to HTML 4.01 Frameset Change project default to HTML 5 Add declare(strict_type=1) Customize Hints in Options Dialog
Проблема решена. Поставил visual studio, netbeans удалил. Проблемы с пространством имён нет. В коде composer есть одна ошибка Undefined function в шести местах. В связи с чем хочу спросить совет - мне стоит "причёсывать" код composer устраняя эти ошибки, или не стоит?
причесывать код composer? нет, не стоит. стоит проанализировать почему ошибка возникает и найти решение (или игнорировать). --- Добавлено --- трогать что-либо внутри папки vendor нельзя. ты управляешь этим хозяйствов ТОЛЬКО через composer и его конфигурацию.
Я пока не разобрался до конца, но направление: https://www.php.net/manual/ru/book.apcu.php И: https://getcomposer.org/doc/articles/autoloader-optimization.md И вот что выдаёт редактор по одному файлу, в остальных двух всё тоже: PHP: [{ "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php", "owner": "_generated_diagnostic_collection_name_#0", "code": "1010", "severity": 8, "message": "Undefined function 'Composer\\Autoload\\apcu_fetch'.", "source": "intelephense", "startLineNumber": 453, "startColumn": 21, "endLineNumber": 453, "endColumn": 31 },{ "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php", "owner": "_generated_diagnostic_collection_name_#0", "code": "1008", "severity": 8, "message": "Undefined variable '$hit'.", "source": "intelephense", "startLineNumber": 453, "startColumn": 58, "endLineNumber": 453, "endColumn": 62 },{ "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php", "owner": "_generated_diagnostic_collection_name_#0", "code": "1008", "severity": 8, "message": "Undefined variable '$hit'.", "source": "intelephense", "startLineNumber": 454, "startColumn": 17, "endLineNumber": 454, "endColumn": 21 },{ "resource": "/opt/lampp/htdocs/vendor/composer/ClassLoader.php", "owner": "_generated_diagnostic_collection_name_#0", "code": "1010", "severity": 8, "message": "Undefined function 'Composer\\Autoload\\apcu_add'.", "source": "intelephense", "startLineNumber": 467, "startColumn": 13, "endLineNumber": 467, "endColumn": 21 }]
Как говорится - ту самван хум ит кэн консерн: Поставил Eclipse. Ни каких проблем,!- не с пространством имён, ни с APCu, ни с чем либо ещё... Все танцуют и поют Кумбая..! Зе Энд.