Написал (но и сейчас пишу) библиотеку для работы с API. Для библиотеки создал папку с названием amoNG и туда при разработке поместил все файлы
До этого структура была другой, все файлы были не в src/AmoNG, а рядом с папкой projects. До этого момента composer все видел и всё работало. Но сейчас я посмотрел как сделана структура в других репозиториях, изменил ее, залил composer.json и загрузил в packagist. Мой composer.json для packagist'а:
{
"name": "myname/among",
"description": "PHP библиотека",
"type": "library",
"license": "AGPL-3.0",
"authors": [
{
"name": "MyName",
"email": "MyMail"
}
],
"keywords": ["API", "amoCRM", "amoNG"],
"require": {
"php": ">=5.4.0",
"ext-curl": "*",
"ext-json": "*",
"ext-fileinfo": "*"
},
"autoload": {
"psr-4": { "AmoNG\\": "src/AmoNG" }
},
"config": {
"bin-dir": "vendor/bin",
"process-timeout": 600
}
}
Внутри src/AmoNG такая структура:
Сейчас в projects создаю файл для проверки библиотеки, ввожу composer require myname/among:dev-master
, всё прогружается, подключаю require_once(__DIR__ . '/vendor/autoload.php');
И при попытке инициализировать класс из библиотеки, выскакивает ошибка PHP Fatal error: Uncaught Error: Class '...' not found in ...
Пытаюсь в тестовом файле папки projects инициализировать класс Logger и выпадает вышеописанная ошибка.
В файле Logger такая начальная структура:
<?php
namespace AmoNG;
class Logger
{
Когда я сделал require внутри projects, сформировался composer.json такого содержания:
{
"require": {
"myname/among": "dev-master"
}
}
Я ничего там не менял. Также, попытался сделать инициализацию класса в папке Entities, например, Companies, также вылетает ошибка. У файла Companies такое начало:
<?php
namespace AmoNG\Entities;
use AmoNG\Entities\AbstractEntity;
/**
* класс для работы с компаниями
*/
class Companies extends AbstractEntity
{
Начальный код тестового файла в папке projects при инициализации класса Logger:
<?php
require_once(__DIR__ . '/vendor/autoload.php');
use AmoNG\Logger;
А также Companies:
<?php
require_once(__DIR__ . '/vendor/autoload.php');
use AmoNG\Entities\Companies;
Суть: почему я не могу получить доступ к классам? Структуру я соблюдаю, namespace адекватно написал, по иерархии.
оказывается, что если локально написать код, а потом его загрузить на github, сразу сделать require в composer, то будет загружен старый код (если до этого репозиторий индексировался в packagist). Возникает это из-за того, что packagist около 5 минут синхранизируется с репозиторием github. Из-за этого у меня методы были недоступны. Итого: - или ждать синхронизации файлов на стороне packagist - или подключать через composer пакет локально, тестировать и по итогу делать push на github
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как отключить уведомления на почту администратора сайта о действиях зарегистрированных пользователей? к примеру пользователь поменял пароль,...
Это мой первый и тестовый проект на laravelПодскажите пожалуйста как можно можно вывести определенный атрибут в зависимости от локализации...
Перебираю массив на совпадения, те которые совпадают - удаляю