Автозагрузка с помощью пользовательских классов композитора - PullRequest
0 голосов
/ 24 июня 2019

Я новичок в composer, чтобы управлять загрузкой моих пользовательских классов. Я пытаюсь добавить некоторые пользовательские классы в автозагрузку, но без успеха всегда получаю ошибку Class not found....

Как правильно настроить composer, куда я должен поместить файл composer.json с информацией psr-4 о моем собственном классе / классах?

Может кто-нибудь помочь мне понять, как это будет работать в этом случае? Вот мой фрагмент кода класса, я использую несколько пакетов компоновщика, поэтому мне нужно их автоматически загрузить. Этот файл находится в своем собственном каталоге. Эта структура выглядит так: project_root\assets\library\MyClassFolder

<?php
namespace MyNamespace;

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

use \Foo\Bar;

class MyClass {
 ...
}

?>

Это код, в который класс должен быть загружен. Этот файл находится в корневой папке моего проекта и вызывает ошибку:

<?php

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

use \MyNamespace\MyClass;

if( isset($_POST['do_action']) ){
MyClass::init();
}
?>

Это файл composer.json, который находится в корне проекта:

{
    "require": {
        "gabordemooij/redbean": "^5.3"
    },
    "autoload": {
      "psr-4": {
        "MyNamespace\\": "assets/library/"
      }
    }
}

1 Ответ

0 голосов
/ 24 июня 2019

Я нашел исправление, я допустил ошибку в файле composer.json. Я не указывал пространство имен на каталог классов. Вот почему у меня ошибка Class not found....

файл композитора теперь выглядит так:

{
    "require": {
        "gabordemooij/redbean": "^5.3"
    },
    "autoload": {
      "psr-4": {
        "MyNamespace\\": "assets/library/MyClassFolder/"
      }
    }
}

Мне также нужно было изменить require_once внутри файлов пользовательских классов, чтобы они указывали на путь поставщика, где находится файл автозагрузки.

вместо require_once __DIR__.'/vendor/autoload.php'

Теперь у меня

require_once dirname(__DIR__, 3).'/vendor/autoload.php' Это потому что

...